Dev-C++ (das Programm) prob mit compilen

05/11/2006 13:16 Gogel#1
hallo,
ich habe mich gestern mal dranbegeben c++ zu lernen (Bin sprachlernbegierig xD). Zum schreiben habe ich mir dann das Programm Dev-C++ besorgt. Nun hab ich durch dass Tutorial ein erstes kleines Programm geschrieben. Ich kann dieses aber nicht ausfüren weil es angeblich nicht compiled ist. Also hab ich mal geguckt, Ah da sind ja 3 button zum compilen, alle durchgegangen , dabei soll ich ne datei saven. Okay alles in dem Ordner drin (Mal denken ich hab nu alles richtig gemacht :O ). Dann will ich dass selbst geschriebene programm öffnen mit Dev-C++, dann kriege ich aber ne meldung "Datei ist nicht Compiled".
Ein fehler in dem Programm kann nicht sein, denn es ist die exakte kopie von dem, was in dem tutorial stand. Irgendwas mache ich beim compilen falsch...

Hm, was habe ich falsch gemacht? Ich habe wirklich alles ausprobiert. Evtl, kann ja mal einer erklären, wer will kann mich auch per

xfire: mrlova1990
ICQ: 195631118
MSN: [Only registered and activated users can see links. Click Here To Register...]
oder hier im Topic
per Board Message

anschreiben.

Danke schonmal im vorraus
05/11/2006 13:21 Ultima#2
wenn er sagt du hast es nicht compiliert haste es halt nicht compiliert^^

da gibts ja 3 oder warens 4 buttons

der erste is nur compilieren der 2. is nur starten und der 3. ist compilieren und dann starten

aber wenn du nen fehler im code hast kannste noch so oft auf kompilieren klicken er wird es nicht machen und dir unten im log window ne fehler mneldung mit zeilenangabe ausgeben

zeig doch mal deinen code also den kompletten!!!
05/11/2006 13:21 BastardZeroFromHell#3
Mhhh.....das war bei mir noch nie oO
Neuinstallen *G*
Wenn nicht lade dir mal da Dev-C++ 6 runter^^
[Only registered and activated users can see links. Click Here To Register...] kA^^
05/11/2006 13:31 Gogel#4
Hi und danke schonmal, soweit ich dass verstanden habe, (sollte) der code so aussehen:

#include <iostream.h>
float berechneKegelvolumen(float r,float h)
{
const float PI=3.14f;
float g=PI*r*r;
float volumen=(grundflaeche*hoehe)*1/3;
return v;
};
void main()
{
float radius;
float hoehe;
cout<<"Bitte geben Sie den Radius ein: ";
cin>>radius;
cout<<"Bitte geben Sie die Hoehe ein: ";
cin>>hoehe;
cout<<"Das Volumen betraegt: "<<berechneKegelvolumen(radius,hoehe)<<endl;
};

wobei ich nitma weiss woher das iostream.h kommen soll^^
05/11/2006 13:55 Ultima#5
Quote:
Originally posted by Gogel@May 11 2006, 13:31
Hi und danke schonmal, soweit ich dass verstanden habe, (sollte) der code so aussehen:

#include <iostream.h>
float berechneKegelvolumen(float r,float h)
{
const float PI=3.14f;
float g=PI*r*r;
float volumen=(grundflaeche*hoehe)*1/3;
return v;
};
void main()
{
float radius;
float hoehe;
cout<<"Bitte geben Sie den Radius ein: ";
cin>>radius;
cout<<"Bitte geben Sie die Hoehe ein: ";
cin>>hoehe;
cout<<"Das Volumen betraegt: "<<berechneKegelvolumen(radius,hoehe)<<endl;
};

wobei ich nitma weiss woher das iostream.h kommen soll^^
die is für die streams also ströme das cin und cout sind solche ströme dessen standart ausgabe auf die console gelegt ist

und die iostream.h ist eine sogenannte header datei die bestimmte funktionen deklariert und bereitstellt eben das cin und cout

so ich sehe nun so auf den ersten blcik keinen fehler im code

biste denn sicher das du den code kompiliert hast?

er müßte dann ja auch unten im log window success oder erfolgreich erstellt oder so schreiben
05/11/2006 14:07 Gogel#6
Hi, ich hab mal soweit screenis gemacht^^

1. schritt (versuche zu kompilen)

[Only registered and activated users can see links. Click Here To Register...]

2. schritt (das Programm zu öffnen)

[Only registered and activated users can see links. Click Here To Register...]

Und zum schluss noch der Compiler log:

Compiler: Default compiler
Building Makefile: "C:&#092;Dev-Cpp&#092;Makefile.win"
Führt make... aus
make.exe -f "C:&#092;Dev-Cpp&#092;Makefile.win" all
g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include"

In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,
from main.cpp:1:
C:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.
main.cpp: In function `float berechneKegelvolumen(float, float)':
main.cpp:6: error: `grundflaeche' undeclared (first use this function)
main.cpp:6: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:6: error: `hoehe' undeclared (first use this function)
main.cpp:7: error: `v' undeclared (first use this function)

main.cpp: At global scope:
main.cpp:10: error: `main' must return `int'

make.exe: *** [main.o] Error 1

Ausführung beendet
05/11/2006 22:11 Ultima#7
Im compiler log steht eigentlich alles was da so falsch war

allgemein zuerst einmal vorweg

wenn du variablen definierst sind diese namen der variablen nur in der funktion wo du sie deklariert (also da wo du sagst das name XXX vom typ YY ist z.B. float radius) hast gültig

ne funktion sieht immer so aus

typ name(typ parametername)
{ float radius;
...
}

dann kannst du nur in der funktion also zwischen den { } klammern den namen benutzen außerhalb also in einer anderen funktion sind die variablen nicht bekannt und du kannst sie nicht benutzen


so schaut man sich mal deinen code und den compiler log an sieht man sofort zumindest wenn man weiß was es bedeutet das du das nicht so eingehalten hast

Quote:

main.cpp: In function `float berechneKegelvolumen(float, float)':
main.cpp:6: error: `grundflaeche' undeclared (first use this function)
main.cpp:6: error: (Each undeclared identifier is reported only once for each function it appears in.)
main.cpp:6: error: `hoehe' undeclared (first use this function)
main.cpp:7: error: `v' undeclared (first use this function)

main.cpp: At global scope:
main.cpp:10: error: `main' must return `int'
main.cpp: In function `float berechneKegelvolumen(float, float)': <--- hier sagt er dir in welcher funktion der oder die fehler auftraten

main.cpp:6: error: `grundflaeche' undeclared (first use this function) <--- hier sagt er dir das er die variable grundflaeche nicht kennst das heißt du hast entweder den namen falsch geschrieben oder aber die variable heißt anders

bei dir hast du hier ---> float g=PI*r*r; die grundfläche g genannt daher kennt er grundflaeche bei dir nicht


main.cpp:6: error: (Each undeclared identifier is reported only once for each function it appears in.) <--- hier sagt er dir nur das wenn du eine variable hast die er nicht kennt und sie mehrmals vorkommt er es dir nur einmal sagt


main.cpp:6: error: `hoehe' undeclared (first use this function) <-- hier das selbe wie grundflaeche
deklariert hast du die vvariable hier ---> float berechneKegelvolumen(float r,float h) im funktions kopf float h dann müßtest du in der funktion das h beibehalten


main.cpp:7: error: `v' undeclared (first use this function) <--- hier wieder das selbe du meinst die variable volumen schreibst aber v der compiler kann ja nicht wissen was du meinst weil computer ja blöd sind sie sind halt nur maschienen

das main.cpp:7 sagt dir übrigens das der Fehler in der datei main.cpp auftrat und zwar in zeile 7 so kannst du immer ganz einfach und schnell zu den fehlern springen indem du einfach zu der Zeile gehst bzw. nen doppelklick auf die fehlermeldung genügt glaube ich auch

main.cpp: At global scope:
main.cpp:10: error: `main' must return `int' <--- hier ist noch ein fehler in cpp muss die main funktion vom typ int sein und darf nicht void = undefiniert sein

hier mal ein verbesserungs vorschlag von mir

Code:
#include &#60;iostream.h>

float berechneKegelvolumen&#40;float radius, float hoehe&#41;
{
	const float PI = 3.14f;
	float grundflaeche = PI*radius*radius;
	float volumen = &#40;grundflaeche * hoehe&#41; * 1/3;
	
	return volumen;
};

int main&#40;&#41;
{
	float radius;
	float hoehe;
	
	cout&#60;&#60;&#34;Bitte geben Sie den Radius ein&#58; &#34;;
	cin>>radius;
	cout&#60;&#60;&#34;Bitte geben Sie die Hoehe ein&#58; &#34;;
	cin>>hoehe;
	cout&#60;&#60;&#34;Das Volumen betraegt&#58; &#34;&#60;&#60;berechneKegelvolumen&#40;radius,hoehe&#41;&#60;&#60;endl;
	
	return 1;
};
05/13/2006 15:43 Gogel#8
Danke,
ich habe mir ein anderes tutorial gesucht, dass eigtl, soweit auch alles klappt. Auch dass Compilen klappt soweit ganz gut...
nur habe ich seid heute ein problem...
Ich habe durch dass tutorial dieses programm geschrieben (naja nix besonderes, anfangszeit halt^^)

#include <iostream>
using namespace std;

int main()
{
cout<<"Bitte geben Sie eine Zahl ein&#092;n";
int a;
cin>>a;
cout<<"Bitte geben Sie noch eine Zahl ein&#092;n";
int b;
cin>>b;

if (a==b)
{
cout<<"Beide Zahlen sind gleich";
}
if(a<b)
{
cout<<a<<" ist kleiner als"<<b;
}
if(a>b)
{
cout<<a<<"ist größer als "<<b;
}
cout<<"&#092;n";
}

SO wenn ich es nun compile, compiled er wie es soll, dann starte ich dass programm, ich gebe zahl 1 ein, zahl 2...doch dann schließt sich dass fenster einfach, dass hatte ich heute morgen auch schon, bei einem anderen versuch...
wieso?
05/13/2006 15:50 Ultima#9
Quote:
Originally posted by Gogel@May 13 2006, 15:43
Danke,
ich habe mir ein anderes tutorial gesucht, dass eigtl, soweit auch alles klappt. Auch dass Compilen klappt soweit ganz gut...
nur habe ich seid heute ein problem...
Ich habe durch dass tutorial dieses programm geschrieben (naja nix besonderes, anfangszeit halt^^)

#include <iostream>
using namespace std;

int main()
{
cout<<"Bitte geben Sie eine Zahl ein&#092;n";
int a;
cin>>a;
cout<<"Bitte geben Sie noch eine Zahl ein&#092;n";
int b;
cin>>b;

if (a==b)
{
cout<<"Beide Zahlen sind gleich";
}
if(a<b)
{
cout<<a<<" ist kleiner als"<<b;
}
if(a>b)
{
cout<<a<<"ist größer als "<<b;
}
cout<<"&#092;n";
}

SO wenn ich es nun compile, compiled er wie es soll, dann starte ich dass programm, ich gebe zahl 1 ein, zahl 2...doch dann schließt sich dass fenster einfach, dass hatte ich heute morgen auch schon, bei einem anderen versuch...
wieso?
das kommt daher weil das programm in der console ausgeführt wird welche sich nach beendigung des programms schließt ergo du siehst nix mehr

ein einfaches system("pause"); am ende der main funktion vor dem return 0; behebt das problem übrigens fehlt das bei dir und der compiler müßte dir dafür eigentlich ne warnung ausgeben

int main() {
...
...

system("pause");

return 0;
}

das system('pause') entweder in einfache oder in doppelte anführungszeichen bin mir da gerade nicht sicher
05/13/2006 15:59 Gogel#10
Danke,
hattest von mir ja schon karma gerade bekommen für deine hilfe..
ich werds gleich mal ausprobieren, hasst du eventuell ICQ, MSN oder xfire? Wendern könntest du mir eventuell deine nummer/addy schicken per board message, so dass ich dich direkt fragen kann und dass board dann nit immer zumüllem muss? ^-^

Ich werd es dann nun mal ausprobieren :)
05/14/2006 01:15 leg0las#11
weil ich ja auch gerade mit c++ anfang muss ich erstmal klugscheissen ^^

naja hab mal versucht die einzelnen Zeilen zu kommentieren und hab etwas verändert

Quote:

#include <iostream>
using namespace std;
int main()

{
char abbruch; // hier benutzt man "char" weil für abbruch ein buchstabe genommen wird(GLAUB ICH!^^)
do

{ // der do ... Anfang, dass soll er solange machen bis....
int a; // int = integer = Ganzzahl
int b;

cout<<"Bitte geben Sie eine Zahl ein&#092;n";

cin>>a; // Abfrage was in die Variable a soll
cout<<"Bitte geben Sie noch eine Zahl ein&#092;n";

cin>>b; // Abfrage was in die Variable b soll

if (a==b) // Checkt ob a gleich groß ist wie b
cout<<"Beide Zahlen sind gleich"; // Wenn a = b dann soll er dass ausgeben
if(a<b) // Checkt ob a kleiner als b ist
cout<<a<<" ist kleiner als "<<b; // Wenn a < b ist, den Text ausgeben
if(a>b) // Dass gleiche wie oben nur a größer b
cout<<a<<" ist groesser als "<<b; // Dass selbe in grün :)
cout<<"&#092;n"; // Zeilenumbruch, es ginge auch : cout << endl;

cout << " Nochmal? (J/N) " << endl;
cin >> abbruch; // hier wird gecheckt was bei abbruch reinsoll
} /* ...bis hierhin geht "do..", wenn abbruch ungleich ( != ) n ist(nächste zeile) soll er wieder oben anfangen beim "do.."*/
while (abbruch !='n');
return 0;
}
/* Tipp: wenn man hinter dem "if (x)"... nur eine Zeile braucht, wie z.b. bei dir
if (a>b)
<Hier nur eine Zeile> ! brauchst du keine {} - klammern machen, weil er , wenn dort keine sind, nur die nächste Zeile liest!*/
kannst dir ja mal angucken
11/12/2010 19:18 xmichaelxx#12
hy ich fange auch grad an
11/12/2010 19:19 xmichaelxx#13
aber ich kenne mich nicht gut aus