Forum: Miniräknare problem C++

Forum huvudsida -> Programmering -> Miniräknare problem C++

Sidor: 1

Till botten

Bl00D 10:14 - 26:e Oktober 2009 | Post #1
Medlem
Inlägg: 1


Skicka PM
Jag har läst hela nybörjar guiden för C++ och förstår den helt osv...

men jag har detta error på en miniräknare som jag vill ha klar så snabbt om möjligt.


Här är koden:
  1. #include <iostream>
  2.  
  3. using std::cout;
  4. using std::cin;
  5.  
  6. int ital1;
  7. int ital2;
  8. int svar;
  9. int symbol;
  10. int a;
  11. int b;
  12. int c;
  13. int d;
  14.  
  15. int minFunktion (int ital1, int ital2, int svar, int symbol);
  16.  
  17. int minFunktion (int ital1, int ital2, int svar, int symbol)
  18. {
  19. if (symbol == "+")
  20. {
  21. a = (ital1 + ital2);
  22. return a;
  23. }
  24.  
  25.  
  26. if (symbol == "-")
  27. {
  28. b = (ital1 - ital2);
  29. return b;
  30. }
  31.  
  32. if (symbol == "*")
  33. {
  34. c = ital1 * ital);
  35. return c;
  36. }
  37.  
  38. if (symbol == "/")
  39. {
  40. d = (ital1 / ital2);
  41. return d;
  42. }
  43. return 0;
  44. }
  45.  
  46. int main()
  47. {
  48. cout << "Detta är DOS miniräknaren av Bl00D. V 1.0";
  49.  
  50. cout << "Skriv in ett tal: ";
  51. cin >> ital1;
  52.  
  53. cout << "Välj ett räknesätt, använd +, -, *, och / på numpaden";
  54. cin >> symbol;
  55.  
  56. cout << "Skriv in ett tal till";
  57. cin >> ital2;
  58.  
  59. int minFunktion (int symbol);
  60.  
  61. cout << "Det blir:" << svar;
  62.  
  63. cin.get();
  64. return 0;
  65.  
  66. }


precis som alla andra, hatar jag när jag inte kan lösa mina errors (jag är inte så bra på att felsöka men det finns inget på google).


Här är min Buildlog:
  1. ------ Rebuild All started: Project: miniräknare, Configuration: Release Win32 ------
  2. Deleting intermediate and output files for project 'miniräknare', configuration 'Release|Win32'
  3. Compiling...
  4. stdafx.cpp
  5. Compiling...
  6. miniräknare.cpp
  7. .miniräknare.cpp(20) : error C2446: '==' : no conversion from 'const char *' to 'int'
  8. There is no context in which this conversion is possible
  9. .miniräknare.cpp(20) : error C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'
  10. .miniräknare.cpp(27) : error C2446: '==' : no conversion from 'const char *' to 'int'
  11. There is no context in which this conversion is possible
  12. .miniräknare.cpp(27) : error C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'
  13. .miniräknare.cpp(33) : error C2446: '==' : no conversion from 'const char *' to 'int'
  14. There is no context in which this conversion is possible
  15. .miniräknare.cpp(33) : error C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'
  16. .miniräknare.cpp(35) : error C2065: 'ital' : undeclared identifier
  17. .miniräknare.cpp(35) : error C2059: syntax error : ')'
  18. .miniräknare.cpp(39) : error C2446: '==' : no conversion from 'const char *' to 'int'
  19. There is no context in which this conversion is possible
  20. .miniräknare.cpp(39) : error C2040: '==' : 'int' differs in levels of indirection from 'const char [2]'
  21. Build log was saved at "file://c:Documents and SettingsMy friendMina dokumentVisual Studio 2008ProjectsminiräknareminiräknareReleaseBuildLog.htm"
  22. miniräknare - 10 error(s), 0 warning(s)
  23. ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========


All hjälp är uppskattad (särskilt den snabba och korrekta)
för jag vill börja med Win32 API efter detta så jag inte bara kan göra saker till Kommandotolken.


Tack på förhand




martin310 10:41 - 26:e Oktober 2009 | Post #2
Medlem
Inlägg: 132


Skicka PM
Eftersom int inte är string måste du ändra int symbol; till char symbol[2];

-------------------------

Hjälp jorden med Granola, det är gratis och funkar på både Windows och Linux, och försämrar inte datorns prestandad!





Kekke 01:23 - 27:e Oktober 2009 | Post #3
Medlem
Inlägg: 4


Skicka PM
Du kommer heller inte kunna jämföra 2 char[]'s med ==-operatorn.

Antingen använder du dig av strings eller så använder du dig av funktionen strcmp

-------------------------
Ingen signatur!



ozamosi 02:27 - 27:e Oktober 2009 | Post #4
Administratör
Inlägg: 1129


Skicka PM
…fast nu är ju symbol tecken och inte strängar. Så använder man typen char går det utmärkt att använda ==.

Så att byta ut alla int symbol mot char symbol, och att byta ut alla dubbelfnuttar i if-satserna mot enkelfnuttar borde lösa felen. Ja, inte problemet med de obalanserade parenteserna på rad 34, men utöver det.

-------------------------
Ljusblå



Vitdom 18:17 - 27:e Oktober 2009 | Post #5
Medlem
Inlägg: 71


Skicka PM
När du skriver "symbol == "+"" så uppfattar kompilatorn som att du vill jämföra en int(symbol) med en pekare till const char("+"). I C och C++ är C-strängar pekare till char, därför kan du inte jämföra symbol med "+".

Om du ville jämföra symbol med teckenkoden för '+' så skulle du ha skrivit "symbol == '+'", att man skriver ett tecken inom ' ' talar om för kompilatorn att man menar TECKENKODEN till det tecknet som står mellan ' '.

Ett annat fel som du har gjort är att du stavat en variabels namn fel på rad 34, du har även glömt att skriva en parantes i början på uttrycket, eller bara av misstag lag dit en parantes i slutet av uttrycket.

Du har även gjort ditt funktionsanrop fel, men det får du fundera ut själv eller vänta på att någon annan tar sig tid och beskriver det.

Det finns även obegriplig kod som aldrig används i ditt program eller som används på ett dåligt sätt. Pröva att läsa någon guide på internet om hur man programmerar på ett optimalt och konsekvent sätt, och skriv inte bara saker utan att du vet vad du gör.

-------------------------



Senast redigerad 18:23 - 27:e Oktober 2009


Sidor: 1

Forum huvudsida -> Programmering -> Miniräknare problem C++
Atom feed

Du får inte posta i den här tråden | Till toppen