Missa inte Amazon Prime Deal Days!
Permalänk
Medlem

c++ program krashar.

Hej, jag håller på att lära mig c++ och för att lära mig så skriver jag ett lite matematiks program, det har funkat bra till nu när det börjat krasha. Det kommer upp en ruta över konsolen som säger "Mathematics har slutat svara". Behöver lite hjälp. Jag har suttit och klurat och testat lite för att lära mig av mitt misstag men jag kommer inte på vad som är felet. Så vad kan felet vara? PS: snälla gnäll inte och säg: ohh lägg ner med programmering du kan fan inget skit dålig kod osv. Det är mitt första arbete och jag har lärt mig detta fort. Och ingen kan allt i början.

#include <cstdlib> #include <iostream> #include "stdlib.h" using namespace std; int main() { unsigned short int money; unsigned short int answerOne; unsigned short int answerTwo; unsigned short int answerThree; char Y; char b; string choice; string start = start; string about = about; string exit = exit; b = b; Y = Y; money = 0; answerOne = 17; answerTwo = 27; answerThree = 10; system ("TITLE Mathematics"); system ("COLOR 0B"); menu: cout << ("Welcome to Mathematics\n"); cout << endl; cout << ("START"); cout << endl; cout << ("ABOUT"); cout << endl; cout << ("EXIT"); cout << endl; cin >> choice; if (choice == start) { goto questOne; } if (choice == about) { goto about; } if (choice == exit) { goto exit; } else { goto menu; } about: cout << ("This game is made by Fredrik Dahl\n"); cout << ("This is my first ever made c++ program\n"); cout << ("Hope you like it!\n"); cin >> b; if (b == b) { goto menu; } questOne: system ("cls"); cout << ("Quest"); cout << endl; cout << endl; cout << endl; cout << ("What is 5 + 12?"); cout << endl; cout << endl; cout << ("Reward: 20p"); cout << endl; cout << endl; cout << ("Current money: "); cout << money; cout << endl; cout << endl; cin >> answerOne; if (answerOne == 17) { system ("cls"); system ("COLOR 0A"); cout << ("Congratualtionz!"); cout << endl; cout << ("Reward: 20p"); money = money + 20; cout << endl; cout << ("Current money: "); cout << money; cout << endl; cout << endl; cout << ("Write y and press enter to proceed"); cout << endl; cin >> Y; if (Y == Y) goto questTwo; else goto menu; } else { system ("cls"); system ("COLOR 0C"); cout << ("Incorrect, try again"); cout << endl; cin >> b; if (b == b) goto questOne; } questTwo: system ("cls"); system ("COLOR 0B"); cout << ("Quest2"); cout << endl; cout << endl; cout << ("What is 3*9?"); cout << endl; cout << endl; cout << ("Reward 25p"); cout << endl; cout << endl; cout << ("Current money: "); cout << money; cout << endl; cout << endl; cin >> answerTwo; if (answerTwo == 27) { system ("cls"); system ("COLOR 0A"); cout << ("Congratulations!"); cout << endl; cout << ("Reward 25p"); money = money + 25; cout << endl; cout << ("Current money: "); cout << money; cout << endl; cout << ("Write Y and press enter to proceed"); cout << endl; cin >> Y; if (Y == Y) goto questThree; else goto menu; } else { system ("cls"); system ("COLOR 0C"); cout << ("Incorrect, try again"); cout << endl; cin >> b; if (b == b) goto questTwo; } questThree: system ("cls"); system ("COLOR 0B"); cout << ("Quest3"); cout << endl; cout << endl; cout << ("What is 53/5?\n"); cout << ("Just write the interger"); cout << endl; cout << endl; cout << ("Reward: 30p"); cout << endl; cout << ("Current money: "); cout << money; cout << endl; cout << endl; cin >> answerThree; if (answerThree == 10) { system ("cls"); system ("COLOR 0A"); cout << ("Congratulations!"); cout << endl; cout << ("Reward: 30p"); cout << endl; cout << endl; cout << ("Current money: "); cout << money; cout << endl; cout << endl; cout << ("Write Y and press enter to proceed."); cout << endl; cin.get(); } else { system ("cls"); system ("COLOR 0C"); cout << ("Incorrect, try again"); cin >> b; if (b == b) goto questThree; } exit: cin.get(); return 0; }

Permalänk

Jag är i detta moment mycket trött, men som ett första steg skulle jag läsa lite om funktioner och integrera de, samt att byta ut alla goto: till while eller for-satser.

Om jag kompilerar detta i Visual Studio 2010 får jag endast en massa boolean och const errors vilket jag tyvärr inte kan uppfatta meningen av, men jag skulle tro att det har något att göra med dina deklarationer. (b = b?). Har väldigt svårt att läsa koden. inkludera görna kommentarer och strukturera koden

Visa signatur

Fractal Define XL | Fractal Design 800W mod. | Intel i5 2500K@3.5GHz | Asrock P67 Extreme4 | Gigabyte 560Ti OC | 2x4 1600MHz Corsair Vengeance

Permalänk
Medlem

Som föregående säger... innan du skriver en enda rad till så läs på om funktioner å bryt upp den där horribla koden :'(
Sen ere dödsstraff på GOTO om du inte visste det!!:o

"if (b == b)" wtf?:P

Hur som, städa din kod så kommer du säkert kunna hitta felet själv utan problem när det faktiskt är möjligt att felsöka den på ett vettigt sätt.

Visa signatur

Spelrigg: 800D| i7 3930K@4,7 GHz - Custom WC | 32 GB Kingston HyperX Beast | 7970 GHz X-Edition |1x30 Dell U3011, 2x27" | Sennheiser HD650 | Xonar Essence STX |
Laptop: G74SX 17,3" 120 Hz 3D |
Server: Phenom II X4 955BE | Corsair XMS3 8 GB | 16 HDDs, 27 TB |
HTPCs: ASUS EEE Box 1.8 Ghz | Blu-Ray | OCZ Vertex 2 60 GB | 4 GB RAM |

Permalänk
Medlem

Se över dina variabel-deklarationer:

string start = start;

ska vara:

string start = "start";

men det räcker att deklarera choice och sen skriva om if-satserna som följer:

if (choice == "start"){ ...gör något... } if (choice == "about"){ ...gör något annat... } osv.

Visa signatur

CPU: Ryzen 5 1600 GPU: Asus GeForce GTX 1060 6GB DUAL Moderkort: MSI B350M Mortar
RAM: 16GB Corsair Vengeance DDR4 3200MHz PSU: Corsair RM750X
Laptop: ThinkPad T480s, Core i7 8550U, 16GB RAM Mobil: Samsung Galaxy S10

Permalänk
Medlem
Skrivet av GHARN:

cin >> b; if (b == b) { goto menu; }

Du behöver inte ha en if-sats här, eftersom du inte är intresserad av vad användaren skriver och att du alltid vill exekvera goto menu;.

Permalänk
Medlem
Skrivet av Gnejs:

Som föregående säger... innan du skriver en enda rad till så läs på om funktioner å bryt upp den där horribla koden :'(
Sen ere dödsstraff på GOTO om du inte visste det!!:o

"if (b == b)" wtf?:P

Hur som, städa din kod så kommer du säkert kunna hitta felet själv utan problem när det faktiskt är möjligt att felsöka den på ett vettigt sätt.

if (b ==b) skrev jag bara för att få ihop det för jag kom inte på hur jag skulle göra för att det skulle funka så det blev bara en snabb genväg Jag håller på att läsa på som F*N. Så det kommer, men tack för svaret

Permalänk
Medlem
Skrivet av aztrix:

Du behöver inte ha en if-sats här, eftersom du inte är intresserad av vad användaren skriver och att du alltid vill exekvera goto menu;.

Använder det lite som en paus funktion för att den inte bara ska springa igenom koden där så att man inte ser vad som händer.

edit: Jag skulle kunna använda jag tror det är: system ("pause") skulle den funka tror du?

Permalänk
Medlem
Skrivet av -Bloodshot-:

Jag är i detta moment mycket trött, men som ett första steg skulle jag läsa lite om funktioner och integrera de, samt att byta ut alla goto: till while eller for-satser.

Om jag kompilerar detta i Visual Studio 2010 får jag endast en massa boolean och const errors vilket jag tyvärr inte kan uppfatta meningen av, men jag skulle tro att det har något att göra med dina deklarationer. (b = b?). Har väldigt svårt att läsa koden. inkludera görna kommentarer och strukturera koden

Okej, jag förstår vad du menar. Jag har dock ej kommit till delen i min bok jag följer där det handlar om for och while loopar och switch osv än Så det kommer jag sätta dit senare

Permalänk
Medlem

När du använder cout behöver du inga paranteser runt det du skriver:

cout << "hej" << endl << "nästa rad";

Som du ser kan man även fortsätta att skriva utan att skriva cout hela tiden!

if (choice == start) { goto questOne; } if (choice == about) { goto about; } if (choice == exit) { goto exit; } else { goto menu; }

Bör skrivas såhär för att lättare se, det finns dock fler fel än det. Indentering gör du endast varje gång du placerar något inom {} taggarna. dvs en "tab" per {. Och du tar bort "tab" när du skriver }

if (choice == start) { goto questOne; } else if (choice == about) { goto about; } else if (choice == exit) { goto exit; } else { goto menu; }

Du bör även bara skriva, int money, utan det andra framför.

Permalänk
Medlem

#include <iostream> class quiz { private: int answer; public: bool q1(); bool q2(); }; bool quiz::q1() { std::cout << "What's 5+2?" << std::endl; std::cin >> answer; if(answer != 7) { return false; } else { return true; } } int main() { quiz x; if(x.q1() == false) { std::cout << "Wrong!"; } else { std::cout << "Correct!"; } return 0; }

Jag rekommenderar att du läser på lite hur C++ fungerar innan du ger dig på sådana här projekt.
Här finns en bra guide som beskriver hur man programmerar med C++, när du har läst tillräckligt och gjort en del småexempel för varje avsnitt för att veta vad min kod ovan betyder, så kanske du är mer redo att ge dig på ett lite större projekt.

Visa signatur

Osocial, instängd och förbannad.

Permalänk
Medlem
Skrivet av Gnejs:

Sen ere dödsstraff på GOTO om du inte visste det!!:o

Nu är inte goto något att rekommendera i detta fallet, men det är fullt acceptabelt (och ibland att föredra) att använda goto-statements för felhantering.

Visa signatur

Citera mig för svar.
Arch Linux

Permalänk
Medlem

Precis som alla andra föreslår så tycker jag att du ska försöka undvika goto. Att använda goto är ett utmärkt sett att ge sig själv en hjärnblödning.

Visa signatur

Chasi: Thermaltake XaserVI LBNS | Mobo: P9X79 PRO
Cpu: SB-E 3930k 4.8ghz @ 1.34v | Kylning: 2x Laing DCC, EK supreme HF Cu, 45*60cm nissan bilkylare.
Ram: 6x4GB G.skill 2133mhz cl11 | Disk: Samsung 830 256GB

Permalänk
Medlem
Skrivet av Debug:

#include <iostream> class quiz { private: int answer; public: bool q1(); bool q2(); }; bool quiz::q1() { std::cout << "What's 5+2?" << std::endl; std::cin >> answer; if(answer != 7) { return false; } else { return true; } } int main() { quiz x; if(x.q1() == false) { std::cout << "Wrong!"; } else { std::cout << "Correct!"; } return 0; }

Jag rekommenderar att du läser på lite hur C++ fungerar innan du ger dig på sådana här projekt.
Här finns en bra guide som beskriver hur man programmerar med C++, när du har läst tillräckligt och gjort en del småexempel för varje avsnitt för att veta vad min kod ovan betyder, så kanske du är mer redo att ge dig på ett lite större projekt.

Som sagt, så håller jag på att lära mig, pluggar varje dag så det kommer nog för mig snart Detta är inte ett "projekt" utan bara typ istället för många små exempel ett stort exempel för att jag ska lära mig snabbare och förstå bättre Men tack ändå för ditt svar

Permalänk
Medlem
Skrivet av Debug:

#include <iostream> class quiz { private: int answer; public: bool q1(); bool q2(); }; bool quiz::q1() { std::cout << "What's 5+2?" << std::endl; std::cin >> answer; if(answer != 7) { return false; } else { return true; } } int main() { quiz x; if(x.q1() == false) { std::cout << "Wrong!"; } else { std::cout << "Correct!"; } return 0; }

Jag rekommenderar att du läser på lite hur C++ fungerar innan du ger dig på sådana här projekt.
Här finns en bra guide som beskriver hur man programmerar med C++, när du har läst tillräckligt och gjort en del småexempel för varje avsnitt för att veta vad min kod ovan betyder, så kanske du är mer redo att ge dig på ett lite större projekt.

om jag inte är helt ute och cyklar så användes väl inte "bool q2();" i din kod?