Som besökare på Hamsterpaj samtycker du till användandet av s.k. cookies för att förbättra din upplevelse hos oss. Jag förstår, ta bort denna ruta!
Annons

C++ assistans sökes

Skapad av Borttagen, 2010-12-08 22:58 i Webbutveckling & Programmering

1 670
23 inlägg
0 poäng
LaDesten
Visningsbild
P 34 Älvdalen Hjälte 3 173 inlägg
0
Jo men tjenare gott folk, nu är det såhär att jag studerar lite C++ och ska nu göra ett program som har en meny med 4 val. Varje val ska ha sin egen funktion som den ska anropa. Sedan när utskriften har gjorts ska det börja om till menyn igen.
Problemet är bara det att jag får knappa halvdussinet med felmeddelanden.

Koden:
Visa spoiler

#include <iostream>
#include <iomanip>
using namespace std;

double volymKlot(double radie);
double volymRatblock(double langd, double bredd, double hojd);
double volymPyramid(double langd, double bredd, double hojd);

const double PI = 3.14159;

int main()
{
char val;
bool fortsatt = true;
double radie, langd, bredd, hojd, volym;
do{
cout << " Meny";
cout << "1. Klot";
cout << "2. Rätblock";
cout << "3. Pyramid";
cout << "4. Avsluta
Ange ditt val: ";
cin >> val;
switch(val){

case '1':
cout << "Ange radie i cm: ";
cin >> radie;
volym = volymKlot(radie);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '2':
cout << "Ange längd, bredd och höjd i cm: ";
cin >> langd >> bredd >> hojd;
volym = volymRatblock(langd, bredd, hojd);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '3':
cout << "Ange basytans längd och bredd, samt pyramidens höjd i cm: ";
cin >> langd >> bredd >> hojd;
volym = volymPyramid(langd, bredd, hojd);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '4':
fortsatt = false;
break;
default:
cout << "Felinmatning.
";
}
return 0;
}

// Funktioner
double volymKlot(double radie) <--- Det är denna sate som får det första felet
{
double volym = ((4*PI*radie*radie*radie)/3);
return volym;
}
double volymRatblock(double langd, double bredd, double hojd)
{
double volym = (langd*bredd*hojd);
return volym;
}
double volymPyramid(double langd, double bredd, double hojd)
{
double volym = (langd*bredd*hojd);
return volym;
}


Ja, de olika funktionerna ska alltså räkna ut volymen av respektive geometrisk form. Förutom det fjärde där programmet på något magiskt sätt ska avslutas. Men följande felmeddelanden uppstår.
Visa spoiler

error C2062: type 'double' unexpected
error C2143: syntax error : missing ';' before '{'
error C2601: 'volymRatblock' : local function definitions are illegal
error C2601: 'volymPyramid' : local function definitions are illegal
fatal error C1004: unexpected end of file found

Hur i hela skokartongen ska jag laga detta? Jag har slitit mitt hår i oräkneliga timmar utan att komma på svaret.
Om det är någon som vill vara söt, så kan denne gärna kika igenom resten av koden också, om det är något annat jag missat <3

Ingen plockar en maskros och ger åt sin vän~

Är reklamen ivägen? Logga in eller registrera dig så försvinner den!

Christley
Visningsbild
P -1322 Bandhagen Hjälte 6 449 inlägg
0
error C2143: syntax error : missing ';' before '{'
fatal error C1004: unexpected end of file found

dom två beror på varandra.

var länge sen jag programmerade i c++ och har tyvärr inte kvar nån kompilator för c++. men men. kan inte hjälpa riktigt i huvudet då

being skinny with abs is like a fat bitch with big tits - it doesn't count

detvanliga
Visningsbild
Hjälte 381 inlägg
0

Svar till LaDesten [Gå till post]:
Är det hela texten från kompilerns output?

Ingen status

LaDesten
Visningsbild
P 34 Älvdalen Hjälte 3 173 inlägg
Trådskapare
0

Svar till Christley [Gå till post]:
Mjo, men jag tror att det kommer fixa sej självt när den första lilla saten lagats, enligt min bok ska det inte vara något tecken där den vill ha ett semikolon.

Ingen plockar en maskros och ger åt sin vän~

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
jag slänger in den i codeblocks och rättar åt dig

Ingen status

Christley
Visningsbild
P -1322 Bandhagen Hjälte 6 449 inlägg
0

Svar till LaDesten [Gå till post]:
det är denna satsen va?
cout << "4. Avsluta
Ange ditt val: ";

being skinny with abs is like a fat bitch with big tits - it doesn't count

LaDesten
Visningsbild
P 34 Älvdalen Hjälte 3 173 inlägg
Trådskapare
0
Svar till detvanliga [Gå till post]:
Om kompilern är det jag tror det är: Ja.. typ.
Missade sista raden som bara säger "Error executing cl.exe."



Svar till MisterD [Gå till post]:
Thats is very nice of you, kind sir!



Svar till Christley [Gå till post]:
Vilket, det första eller det där om semikolonet?


Ingen plockar en maskros och ger åt sin vän~

detvanliga
Visningsbild
Hjälte 381 inlägg
0

Svar till LaDesten [Gå till post]:
ett småfel jag ser nu iaf, är att efter alternativ 4, så ska det nog inte vara ny rad och sedan fortsätta..

Och det är ingen closing bracket ( } ) i slutet av main xD

Ingen status

detvanliga
Visningsbild
Hjälte 381 inlägg
0
#include <iostream>
#include <iomanip>
using namespace std;

double volymKlot(double radie);
double volymRatblock(double langd, double bredd, double hojd);
double volymPyramid(double langd, double bredd, double hojd);

const double PI = 3.14159;

int main()
{
char val;

bool fortsatt = true;

double radie, langd, bredd, hojd, volym;

do{
cout << " Meny";
cout << "1. Klot";
cout << "2. Rätblock";
cout << "3. Pyramid";
cout << "4. Avsluta Ange ditt val: ";
cin >> val;

switch(val){

case '1':
cout << "Ange radie i cm: ";
cin >> radie;
volym = volymKlot(radie);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '2':
cout << "Ange längd, bredd och höjd i cm: ";
cin >> langd >> bredd >> hojd;
volym = volymRatblock(langd, bredd, hojd);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '3':
cout << "Ange basytans längd och bredd, samt pyramidens höjd i cm: ";
cin >> langd >> bredd >> hojd;
volym = volymPyramid(langd, bredd, hojd);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '4':
fortsatt = false;
break;
default:
cout << "Felinmatning.";
}
return 0;
} while( fortsatt );

}

// Funktioner
double volymKlot(double radie)
{
double volym = ((4*PI*radie*radie*radie)/3);
return volym;
}

double volymRatblock(double langd, double bredd, double hojd)
{
double volym = (langd*bredd*hojd);
return volym;
}

double volymPyramid(double langd, double bredd, double hojd)
{
double volym = (langd*bredd*hojd);
return volym;
}



Du har slarvat.. efter en do-loop så måste du ha while( förhållanderna )

du hadde inte en } i slutet av main

och du kan inte göra cout << "asdads ( ny rad i koden ) asdsa";

Funkar för mej

Ingen status

LaDesten
Visningsbild
P 34 Älvdalen Hjälte 3 173 inlägg
Trådskapare
0

Svar till detvanliga [Gå till post]:
Nej så är det inte heller, kanske jag borde tillägga. Raden ser ut såhär:
cout << "4. Avsluta/nAnge ditt val: ";

Fast / åt andra hållet, Hamsterpaj ville sätta det till ny rad annars.

Är det inte? Jag tycker jag hade hur många som helst där :(

Ingen plockar en maskros och ger åt sin vän~

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
I din meny så har du ju inget radbyte? eller det kanske försvann för att HP är så jävla cp-kodat

Ingen status

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
vafalls, du har ju en do{ men ingen while()???

Ingen status

jockeeeee
Visningsbild
P 31 Borlänge Hjälte 619 inlägg
0

Svar till LaDesten [Gå till post]:

Har ändrat lite och nu verkar den funka för mig iaf

Visa spoiler

#include <iostream>
#include <iomanip>
using namespace std;

double volymKlot(double radie);
double volymRatblock(double langd, double bredd, double hojd);
double volymPyramid(double langd, double bredd, double hojd);

const double PI = 3.14159;

int main()
{
int val;
bool fortsatt = true;
double radie, langd, bredd, hojd, volym;
for (;;)
{
cout << " Meny
"
<< "1. Klot
"
<< "2. Rätblock
"
<< "3. Pyramid
"
<< "4. Avsluta
"
<< "Ange ditt val:
" ;
cin >> val;
switch(val)
{

case 1:
cout << "Ange radie i cm: ";
cin >> radie;
volym = volymKlot(radie);
cout << "Volymen är: " << volym << " cm^3.";
break;

case 2:
cout << "Ange längd, bredd och höjd i cm: ";
cin >> langd >> bredd >> hojd;
volym = volymRatblock(langd, bredd, hojd);
cout << "Volymen är: " << volym << " cm^3.";
break;

case 3:
cout << "Ange basytans längd och bredd, samt pyramidens höjd i cm: ";
cin >> langd >> bredd >> hojd;
volym = volymPyramid(langd, bredd, hojd);
cout << "Volymen är: " << volym << " cm^3.";
break;

case 4:
exit(0);
break;

default:
cout << "Felinmatning.";
break;
}
}

return 0;
}

// Funktioner
double volymKlot(double radie)
{
double volym = ((4*PI*radie*radie*radie)/3);
return volym;
}
double volymRatblock(double langd, double bredd, double hojd)
{
double volym = (langd*bredd*hojd);
return volym;
}
double volymPyramid(double langd, double bredd, double hojd)
{
double volym = (langd*bredd*hojd);
return volym;
}


MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
Så precis som detvanliga säger, förutom att hp tog bort massa radbyten som jag fick fixa så var det bara att lägga till en måsvinge och en while() så var det klart, tror inte jag behöver lägga upp koden då han redan gjort det och ts klarar det nog själv.


Svar till detvanliga [Gå till post]:
fast det ska väl ändå vara while(val!=4) eftersom det ska avslutas när man skriver in 4.



Tillägg av MisterD 2010-12-08 23:24

vafan ts, varför har du gjort val till en char istället för en integer? det är ju bara siffror som ska matas in ändå.

Ingen status

LaDesten
Visningsbild
P 34 Älvdalen Hjälte 3 173 inlägg
Trådskapare
0



Svar till MisterD [Gå till post]:
Nu blev det spännande här!
Inget felmeddelande efter jag stoppat in den där while-saken.

Jag måste ha läst väldigt dåligt på den där delen i boken då, för jag hade inte den blekaste aning om att det var någe sådant!

Nu återstår det bara att se om jag kan knåda ihop så det inte avslutas efter uträkningen, utan börjar om igen!

Programmering A på 2 veckor svider i mitt huvud :<

Ingen plockar en maskros och ger åt sin vän~

detvanliga
Visningsbild
Hjälte 381 inlägg
0

Svar till LaDesten [Gå till post]:
Använd /n eller endl för nya rader, ex: cout << "lol
"; eller cout << "lol" << endl; du borde använda
.

Och fick koden att funka som den är tänkt nu :P

Visa spoiler

Ett stycke C#-kod:

#include <iostream>
#include <iomanip>
using namespace std;

double volymKlot(double radie);
double volymRatblock(double langd, double bredd, double hojd);
double volymPyramid(double langd, double bredd, double hojd);

const double PI = 3.14159;

int main()
{
char val;

bool fortsatt = true;

double radie, langd, bredd, hojd, volym;

do{
cout << " Meny";
cout << "1. Klot";
cout << "2. Rätblock";
cout << "3. Pyramid";
cout << "4. Avsluta Ange ditt val: ";
cin >> val;

switch(val){

case '1':
cout << "Ange radie i cm: ";
cin >> radie;
volym = volymKlot(radie);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '2':
cout << "Ange längd, bredd och höjd i cm: ";
cin >> langd >> bredd >> hojd;
volym = volymRatblock(langd, bredd, hojd);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '3':
cout << "Ange basytans längd och bredd, samt pyramidens höjd i cm: ";
cin >> langd >> bredd >> hojd;
volym = volymPyramid(langd, bredd, hojd);
cout << "Volymen är: " << volym << " cm^3.";
break;

case '4':
fortsatt = false;
break;
default:
cout << "Felinmatning.";
}
} while( fortsatt );

return 0;

}

// Funktioner
double volymKlot(double radie)
{
double volym = ((4*PI*radie*radie*radie)/3);
return volym;
}

double volymRatblock(double langd, double bredd, double hojd)
{
double volym = (langd*bredd*hojd);
return volym;
}

double volymPyramid(double langd, double bredd, double hojd)
{
double volym = (langd*bredd*hojd);
return volym;
}



Ingen status

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
Svar till detvanliga [Gå till post]:
jahaaaa, han använde fortsatt för att avsluta, så skulle jag knappast ha gjort, lättare att bara använda val istället för val och boolen fortsatt



Tillägg av MisterD 2010-12-08 23:27

förresten så använde han väl radbyten men de försvinner pga hp, endl försvinner dock inte om man använder såna

Ingen status

detvanliga
Visningsbild
Hjälte 381 inlägg
0
Svar till MisterD [Gå till post]:
om det är som du säger : while(val!=4) så kommer den kolla om värdet INTE är 4 :P



Tillägg av detvanliga 2010-12-08 23:26

oj, mitt fel ^^ orkar knappt tänka, men gillar o lösa problem relaterade till c++ :P orkar dock inte fixa hela koden ikväll

Ingen status

Christley
Visningsbild
P -1322 Bandhagen Hjälte 6 449 inlägg
0
Svar till LaDesten [Gå till post]:
de jag menar är att de inte finns nå radbyte.

denna delen:
cout << "4. Avsluta
Ange ditt val: ";
cin >> val;


borde se ut såhär:

cout << "4. Avsluta. (backslash)nAnge ditt val: ";
cin >> val;



av nån anledning gör backslash n new line på hp med lol

being skinny with abs is like a fat bitch with big tits - it doesn't count

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
Sådär ja, allt är fixat, fixade t.o.m. lite extrasaker, testa skriv in en bokstav och kolla vad som händer.

http://pastebin.com/2s03ePPb

Tillägg av MisterD 2010-12-08 23:46

dock så orkade jag inte fixa så att programmet inte kraschar om man skriver in en bokstav när du är inne i någon av funktionerna. Gjorde det på mitt stora arbete i progA dock, satt fan i sjukt många timmar och bara feltestade varenda inmatning så att programmet aldrig kraschade. Självklart hade jag clear screen-funktionen som jag la till i ditt program så att inte menyn skrivs flera gånger, det blir så fult.



Tillägg av MisterD 2010-12-08 23:46

förresten, du borde fixa bokstäverna ÅÄÖ



Tillägg av MisterD 2010-12-08 23:47

Och din funktion för att räkna ut arean på en cirkel är fel btw.
EDIT jaha det var klot

Ingen status

LaDesten
Visningsbild
P 34 Älvdalen Hjälte 3 173 inlägg
Trådskapare
0
Svar till MisterD [Gå till post]:
Oj, jävlar i min låda. Det där var väldigt sexuellt upphetsande må jag säga, tas sånt där ens upp i Programmering A?

Oh, och angående ÅÄÖ har jag inte den blekaste hur man fixar, jag började läsa det här förra måndagen :)


Ingen plockar en maskros och ger åt sin vän~

MisterD
Visningsbild
P Hjälte 3 738 inlägg
0
Svar till LaDesten [Gå till post]:
Vi hade nån tabell i vår bok där det stod vad åäö är, googlade fram det nu iaf.
å = x86
ä = x84
ö = x94
Å = x8F
Ä = x8E
Ö = x99

alltså om du ska skriva ut ordet åsna så skriver du cout<<"x86sna";
Ser mycket snyggare ut med åäö än de där fuckade tecknen som blir annars. eller så skriver du på engelska i programmen helt enkelt.




Tillägg av MisterD 2010-12-09 00:09

och angående om man gör det i ProgA så njaaa, det är nog överkurs, skulle fått mvg på det arbetet men eftersom jag gjort ungefär som vi gjort, suttit och snackat med en polare om programmet så hade jag laddat upp koden på pastebin, då hittade läraren såklart min kod där med det där jävla programmet de använder och jag fick bara vg :(
Dessutom stod det datum när det blev uppladdat och det var dagen efter att jag skickat in koden -.-
blev så jävla lack. Hon sa dessutom att jag antingen fick sänkt betyg eller fick skriva om de delar som var lika. Men hur fan ska jag skriva om min egen kod? Det kommer ju bli exakt likadant. Själva programmet var jäkligt avancerat också, tror tyvärr att jag tappat bort det, skulle mer än gärna läsa hur fan jag gjorde för att komma runt alla fel.



Tillägg av MisterD 2010-12-09 00:12

JAA! hittade mitt gamla arbete på mailen. Har fan letat efter det

Ingen status

gaminggirl
Visningsbild
F 38 Lund Hjälte 8 084 inlägg
0

Svar till LaDesten [Gå till post]:
Du har inte avslutat main innan du påbörjade de nya funktionerna. Se om det löser fler av dins problem...

Ingen status


Forum » Datorer & IT » Webbutveckling & Programmering » C++ assistans sökes

Ansvariga ordningsvakter:

Användare som läser i den här tråden just nu

1 utloggad

Skriv ett nytt inlägg

Hej! Innan du skriver om ett potentiellt problem så vill vi påminna dig om att du faktiskt inte är ensam. Du är inte onormal och världen kommer inte att gå under, vi lovar! Så slappna av och gilla livet i några minuter - känns det fortfarande hemskt? Skriv gärna ner dina tankar och frågor, vi älskar att hjälpa just dig!

Den här tråden är äldre än Rojks drömtjej!

Det senaste inlägget i den här tråden skrevs för över tre månader sedan. Är du säker på att du vill återuppliva diskussionen? Har du något vettigt att tillföra eller passar din fråga i en ny tråd? Onödiga återupplivningar kommer att låsas så tänk efter en extra gång!

Hjälp

Det här är en hjälpruta

Här får du korta tips och förklaringar om forumet. Välj kapitel i rullningslisten här ovanför.

Rutan uppdateras automagiskt

När du använder funktioner i forumet så visas bra tips här.


Annons
Annons
Annons
Annons