webForumDet fria alternativet

C++-program som inte fungerar! (nybörjare...)

22 svar · 532 visningar · startad av trexter

trexterMedlem sedan mars 20021 889 inlägg
#1

Skulle någon kunna skriva om detta lilla program så att det fungerar? Så kan jag fråga om det är några förändringar jag ej förstår...

#include <iostream>
#include <string>

using namespace std;

int main () {
  string Name;
  int age;

  cout << "Skriv in ditt namn:" << endl;
  cin >> Name >> endl;
  cout << "Skriv in din alder:" << endl;
  cin >> Age >> endl;
  cout << "Du  är" << Age << "ar och heter" << Name << endl;
}

Felmeddelanden:

C:\Documents and Settings\Ägaren\Skrivbord\C++\GetNameAndAge.cpp(11) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion)
C:\Documents and Settings\Ägaren\Skrivbord\C++\GetNameAndAge.cpp(13) : error C2065: 'Age' : undeclared identifier
C:\Documents and Settings\Ägaren\Skrivbord\C++\GetNameAndAge.cpp(13) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion)
C:\Documents and Settings\Ägaren\Skrivbord\C++\GetNameAndAge.cpp(15) : warning C4508: 'main' : function should return a value; 'void' return type assumed
Error executing cl.exe.

:)

BeatboxMedlem sedan okt. 20013 217 inlägg
#2
int age;

och....

cin >> Age >> endl;

borde vara....

cin >> age >> endl;
ViktorMedlem sedan aug. 20021 752 inlägg
#3

Debug tips :)

error C2065: 'Age' : undeclared identifier

"Undeclared identifier" betyder att variabeln inte finns, brukar leda till många felmedelanden, men det viktigaste är de 2-3 första (oftast).

/Viktor

trexterMedlem sedan mars 20021 889 inlägg
#4

Tack, men koden genererar fortfarande felmeddelanden.

:)

trexterMedlem sedan mars 20021 889 inlägg
#5
#include <iostream>
#include <string>

using namespace std;

int main () {
  string name;
  int age;

  cout << "Skriv in ditt namn:" << endl;
  cin >> name >> endl;
  cout << "Skriv in din alder:" << endl;
  cin >> age >> endl;
  cout << "Du  är" << age << "ar och heter" << name << endl;
}
C:\Documents and Settings\Ägaren\Skrivbord\C++\GetNameAndAge.cpp(11) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion)
C:\Documents and Settings\Ägaren\Skrivbord\C++\GetNameAndAge.cpp(13) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion)
C:\Documents and Settings\Ägaren\Skrivbord\C++\GetNameAndAge.cpp(15) : warning C4508: 'main' : function should return a value; 'void' return type assumed

:)

Alpha IIMedlem sedan maj 20002 993 inlägg
#6

Du borde lägga till return 0; i slutet av main(), hjälper inte felmeddelanderna men tar bort varningen! :)

Varför har du endl i slutet? Har ingen större koll på c/c++ men du kan ju testa utan och se om det fungerar.

trexterMedlem sedan mars 20021 889 inlägg
#7

Tack, det fungerade fint!
return 0; - Det används eftersom att funktionen inte returnerar något, va?! Står nollan för "false", eller?

:)

trexterMedlem sedan mars 20021 889 inlägg
#8

Hur gör man smartast så att programmet inte stängs så fort all kod i main() körts? Som det är nu hinner man inte se texten "Du heter abc och är x år gammal"

:)

PhorpherMedlem sedan feb. 20002 300 inlägg
#9

I det här fallet är "return 0;" felaktigt då mainmetoden är definierad att inte ha något returvärde (void).
Enbart "return;" är korrekt. :)

För att "pausa" så kan du lägga en vanlig inmatning (cin) i slutet på programmet.

trexterMedlem sedan mars 20021 889 inlägg
#10

Jo, så löste jag faktiskt det själv (med cin i slutet alltså)!
Men är det verkligen rätt sätt att lösa det på? Känns lite som en "fullösning", om du förstår hur jag menar. ;)

Tack för ditt svar btw.

:)

CheezesMedlem sedan nov. 2002501 inlägg
#11

Fel-fel-fel!!

trexter skrev:

return 0; - Det används eftersom att funktionen inte returnerar något, va?! Står nollan för "false", eller?

:)

*pip* Wrong answer!
Men en bra tankegång ändå, trexter :)

En return-sats (return 0;) anger att exekveringen/körningen av funktionen ska avsluta.
Med värdet 0, så talar den om att exekveringen avslutas på ett normalt sätt.

Sisådärja.
Trevlig helg, trexter :birp

Mvh
/Cheezes

PhorpherMedlem sedan feb. 20002 300 inlägg
#12

trexter skrev:

Jo, så löste jag faktiskt det själv (med cin i slutet alltså)!
Men är det verkligen rätt sätt att lösa det på? Känns lite som en "fullösning", om du förstår hur jag menar. ;)

Tack för ditt svar btw.

:)

Fult och fult. Anledningen till att du vill att ditt program ska stanna upp är ju för att ditt konsollfönster stängs ner när programmet exekverat klart. Men det är ju pga. hur du startar det (antar att du gör det via din IDE). Om du startar programmet via ett konsollfönster så kommer du ju att se resultatet efter exekvering.

trexterMedlem sedan mars 20021 889 inlägg
#13

Tack för svaren!

:)

trexterMedlem sedan mars 20021 889 inlägg
#14

Hur ska man göra med å, ä och ö. Både output och input med annorlunda tecken ser konstiga ut

:)

aleborgMedlem sedan jan. 20013 341 inlägg
#15

Dom måste du köra som ascii
ä = \x84
å = \x86
ö = \x94
Ä = \x8e
Ö = \x99
Å = \x8f

Om jag inte minns helt fel!

Bara att ersätta direkt i texten :)

trexterMedlem sedan mars 20021 889 inlägg
#16

Men om jag hämtar ett värde som användaren skriver in (med konstiga tecken i), sparar det sedan i en variabel och skriver sedan ut denna variabel, hur gör jag då?

:)

aleborgMedlem sedan jan. 20013 341 inlägg
#17

Det behöver du inte tänka på, det blir rätt!

trexterMedlem sedan mars 20021 889 inlägg
#18

Aha, det var inte de konstiga tecknen som gjorde att programet avslutades, utan att jag försökte skriva in mitt namn, förnamn och efternam med ett mellanrum emellan. Jag förmodar att man måste använda något annat än String för att kunna spara värden med mellanslag!?

:)

stenmarkMedlem sedan apr. 200318 inlägg
#19

Nope
Det har inte med String att göra. Det har med cin >> att göra.
När du skriver cin >> så betyder det att den läser från stnadard input (tangentbordet) tills ett mellanslag kommer. Skriver du cin.getline() istället så tar den hela raden.
getline() ska även ha några inparametrar, kommer inte ihåg dom nu på rak arm. Men jag tror det är ungefär getline( char *sträng, int storlekpåsträng )

aasahMedlem sedan mars 20034 471 inlägg
#20

Phorpher skrev:

I det här fallet är "return 0;" felaktigt då mainmetoden är definierad att inte ha något returvärde (void).
Enbart "return;" är korrekt. :)....

Vad menar du nu??? mainmetoden är inte void i C/C++! I Java däremot är mainmetoden void...

I C/C++ : int main() {... return 0;}
där 0:an indikerar ett korrekt avslutande av programmet, precis som någon annan redan skrivit.

135 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)