[C++] Problem med simpelt program

Permalänk
Medlem

[C++] Problem med simpelt program

Hejsan,

Jag håller på med C++ A kursen och har gjort en uppgift där jag ska göra ett CMD program som ska kunna räkna ut volymen i klot, cylinder o.s.v med hjälp av funktioner. Men enligt min lärare så är scriptet bra kodat, men ändå så får jag felet:

Citat:

1>710.cpp(29): error C2360: initialization of 'volym' is skipped by 'case' label
1> 710.cpp(27) : see declaration of 'volym'

All hjälp är uppskattad! Inga idiot kommentarer jag är ny och håller på att lära mig.

Koden:

#include <iostream> #include <conio.h> using namespace std; bool fortsatt = true; float radie, langd, bredd, hojd, volym; char val; float klot(float radie); float ratblock(float langd, float bredd, float hojd); float cylinder(float radie, float hojd); int main(){ do{ cout <<"MENY" << endl; cout <<"1. Klot" << endl; cout <<"2. Rätblock" << endl; cout <<"3. Cylinder" << endl; cout <<"4. Avsluta" << endl; cout <<"Ditt val: "; cin >> val; switch(val){ case'1': cout <<"Ange radien: "; cin >> radie; float volym = klot(radie); break; case'2': cout <<"Ange längd bredden och höjden: "; cin >> langd >> bredd >> hojd; float volym = ratblock(langd, bredd, hojd); break; case'3': cout <<"Ange radien och höjden: "; cin >> radie >> hojd; float volym = cylinder(radie, hojd); break; case'4': fortsatt = false; break; default: cout <<"Felinmatning:\n\n"; break; } if(val == '1' || val == '2' || val == '3'){ cout <<"Volymen blir:" << volym << "\n\n"; } }while (fortsatt); return 0; } float klot(float radie){ //Räkna ut volymen i ett klot return 4*3.14*radie*radie*radie/3; } float ratblock(float langd, float bredd, float hojd){ //Räkna ut volymen i ett rätblock return bredd*langd*hojd; } float cylinder(float radie, float hojd){ //Räkna ut volymen i en cylinder return 3.14*radie*radie*hojd; }

Visa signatur

ᕦ(ツ)ᕤ

Permalänk

Länge sen jag skrev kod, typ ett år eller så. Men jag upptäckte att google var min vän.

Orkar (läs : kan inte) leta igenom din kod men denna länken kanske hjälper.

https://www.flashback.org/t149659

Lycka till!

Permalänk
Medlem
Skrivet av Fronix:

Koden:

#include <iostream> #include <conio.h> using namespace std; bool fortsatt = true; float radie, langd, bredd, hojd, volym; char val; float klot(float radie); float ratblock(float langd, float bredd, float hojd); float cylinder(float radie, float hojd); int main(){ do{ cout <<"MENY" << endl; cout <<"1. Klot" << endl; cout <<"2. Rätblock" << endl; cout <<"3. Cylinder" << endl; cout <<"4. Avsluta" << endl; cout <<"Ditt val: "; cin >> val; switch(val){ case'1': cout <<"Ange radien: "; cin >> radie; float volym = klot(radie); break; case'2': cout <<"Ange längd bredden och höjden: "; cin >> langd >> bredd >> hojd; float volym = ratblock(langd, bredd, hojd); break; case'3': cout <<"Ange radien och höjden: "; cin >> radie >> hojd; float volym = cylinder(radie, hojd); break; case'4': fortsatt = false; break; default: cout <<"Felinmatning:\n\n"; break; } if(val == '1' || val == '2' || val == '3'){ cout <<"Volymen blir:" << volym << "\n\n"; } }while (fortsatt); return 0; } float klot(float radie){ //Räkna ut volymen i ett klot return 4*3.14*radie*radie*radie/3; } float ratblock(float langd, float bredd, float hojd){ //Räkna ut volymen i ett rätblock return bredd*langd*hojd; } float cylinder(float radie, float hojd){ //Räkna ut volymen i en cylinder return 3.14*radie*radie*hojd; }

Där jag har hilightat i qouten är datatypen onödig att lägga till, den vet att variabeln volym är av typen float, du behöver inte säga det till den när du använder den.

Annars ser det bra ut, keep up the good work

Edit:
Om du villl göra det lite snyggare och lite mer generell så kan du alltid göra om själva menyn till en funktion och kalla på den i do-while satsen, blir behändigare att flytta runt och så på den då samt ifall du senare kanske vill utveckla vidare

Visa signatur

"Riktig fakta? kolla ut genom fönstret på snön och all jävlighet där har du riktig fakta, eller de som går där i kylan, idioter, det är riktig fakta" -- Ett fyllo på bussen, ganska trevlig ändå :)

Permalänk
Medlem
Skrivet av shenjin:

Där jag har hilightat i qouten är datatypen onödig att lägga till, den vet att variabeln volym är av typen float, du behöver inte säga det till den när du använder den.

Annars ser det bra ut, keep up the good work

Edit:
Om du villl göra det lite snyggare och lite mer generell så kan du alltid göra om själva menyn till en funktion och kalla på den i do-while satsen, blir behändigare att flytta runt och så på den då samt ifall du senare kanske vill utveckla vidare

Hmm ser inte vart du highlitat ^^

Skrivet av Fixxxer22:

Länge sen jag skrev kod, typ ett år eller så. Men jag upptäckte att google var min vän.

Orkar (läs : kan inte) leta igenom din kod men denna länken kanske hjälper.

https://www.flashback.org/t149659

Lycka till!

Tack

Visa signatur

ᕦ(ツ)ᕤ

Permalänk

han har highlightat i case 1, 2 och 3

Permalänk
Medlem

Hmm, jag skulle nog deklarerat "volym" tillsammans med dina övriga deklarationer innan "main", och sedan bara tilldelat den ett värde senare istället för att ha tre olika deklarationer av samma variabel.

Visa signatur

Q9450@3.2 w/ TRUE 120, Noctua PF-12 | Asus Maximus Formula w/ 2 HR-05 SLI | Asus 8800 GTS 512 w/ Hr-03 | Corsair TX750W | OCZ 4GB DDR2 PC2-8000 ReaperX | Antec P182

Permalänk
Medlem
Skrivet av Nattmannen:

han har highlightat i case 1, 2 och 3

Jaha ok då förstår jag

Du har jag löst det funkar perfekt

Visa signatur

ᕦ(ツ)ᕤ

Permalänk
Medlem

Jag satt och lekte lite med koden och pillade lite, tänkte jag kunde ge tillbaka den så du kanske kan lära dig lite mer

/* * Ursprunglig kod skriven av Fronix på SweClockers forum * Editerad av Shenjin på SweClockers forum */ #include <iostream> #include <conio.h> using namespace std; float radie, langd, bredd, hojd, volym; char val; float klot(float radie); float ratblock(float langd, float bredd, float hojd); float cylinder(float radie, float hojd); char meny(); int main(){ do{ val = meny(); switch(val){ case'1': cout <<"Ange radien: "; cin >> radie; volym = klot(radie); break; case'2': cout <<"Ange längd bredden och höjden: "; cin >> langd >> bredd >> hojd; volym = ratblock(langd, bredd, hojd); break; case'3': cout <<"Ange radien och höjden: "; cin >> radie >> hojd; volym = cylinder(radie, hojd); break; case'4': return 0; break; default: cout <<"Felinmatning:\n\n"; break; } if(val >= '1' || val <= '3'){ cout <<"Volymen blir:" << volym << "\n\n"; } }while (val != 4); } float klot(float radie){ //Räkna ut volymen i ett klot return 4*3.14*radie*radie*radie/3; } float ratblock(float langd, float bredd, float hojd){ //Räkna ut volymen i ett rätblock return bredd*langd*hojd; } float cylinder(float radie, float hojd){ //Räkna ut volymen i en cylinder return 3.14*radie*radie*hojd; } char meny() { char val; cout <<"MENY" << endl <<"1. Klot" << endl <<"2. Rätblock" << endl <<"3. Cylinder" << endl <<"4. Avsluta" << endl <<"Ditt val: "; cin >> val; return val; }

Lycka till med dina studier, du skriver iallafall fin kod hittils

Edit:
Märkte att jag hade bytt till fel datatyp, korrigerat

Visa signatur

"Riktig fakta? kolla ut genom fönstret på snön och all jävlighet där har du riktig fakta, eller de som går där i kylan, idioter, det är riktig fakta" -- Ett fyllo på bussen, ganska trevlig ändå :)

Permalänk
Medlem

Ah du menade så ja, dedär visste jag inte om ^^

Visa signatur

ᕦ(ツ)ᕤ

Permalänk
Medlem

Sen tycker jag att du har en dålig lärare som tillåter globala variabler. Dessutom så skickar du in dina globala variabler i dina funktioner. Du kommer åt de globala variablerna från funktionerna utan att skicka in dom. Du kan helt enkelt i detta fallet bara lägga in alla floats och char i main.