[c++] errorc2447

x3SoloTalent

OG ist Abiturient!
Hallo Erstmal,
also ich bin noch schüler, haben c++ in Infomatik und ich war am anfang sehr unaufmerksam,
habe nicht aufgepasst und dergleichen.

seitdem wir angefangen haben, struktogramme in programme umzuschreiben blicke ich da durch, da es dadurch nur eine lösung für ein struktogramm gibt, wodurch sich das ganze erleichtert.

im Microsoft Visual c++ 2010 Express habe ich das programm geschrieben, welches auf unerklärliche weise nicht funktioniert.

in der schule benutzen wir das programm microsoft visual c++ 2008 express.

also das problem ist, ich habe das struktogramm recht ordentlich übertragen doch bekomme ich beim erstellen diese fehlermeldung: errorc2447: '{': Funktionsheader fehlt - Parameter im alten stil ?
was ich dadurch intepretiert habe, dass sich von 2008 auf 2010 die schreibweise des programms verändert hat, was ich eher für unwahrscheinlich halte.

wollte das auch testen und habe versucht MSVCpp2008Ex runterzuladen doch ohne erfolg.

dann habe ich das problem gegooglet, habe auch paar treffer auf englischen seiten gefunden, doch da ich ein anfänger bin in C++, habe ich nicht wirklich verstanden wo das problem ist.

jetzt bin ich hier und bitte um rat :D

meine quellcodes:
Code:
#include "stdafx.h"
#include <iostream>
using namespace std;

int main();
{
	float a;
	float b;

	cout<<"Geben Sie eine Zahl ein:"<<endl;
	cin>>a;
	cout<<"Geben Sie eine weitere Zahl ein:"<<endl;
	cin>>b;

	if(a>b) 
	{  
		cout<<"Die groessere Zahl ist:" a<<endl;
	}
	else
	{	
		if(a=b)
		{
			cout<<"Die Zahlen sind gleichgross."<<endl;
		}
		else
		{
			cout<<"Die groessere Zahl ist:" b<<endl;
		}
	}
	return 0;
}
und
Code:
#include "stdafx.h"
#include <iostream>
using namespace std;

int main();
{
	float a;
	float b;
	float c;

	cout<<"Geben Sie eine Zahl ein:"<<endl;
	cin>>a;
	cout<<"Geben Sie eine weitere Zahl ein:"<<endl;
	cin>>b;
	cout<<"Geben Sie noch eine weitere Zahl ein:"<<endl;
	cin>>c;

	if(a>b)
	{
		if(a>c)
		{
			cout<<"Die groesste Zahl ist:" a<<endl;
		}
		else
		{
			if(a=c)
			{
				cout<<"Die groessten Zahlen sind:" a, b<<endl;
			}
			else
			{
				cout<<"Die groesste Zahl ist:" c<<endl;
			}
		}
	}
	else
	{
		if(a=b)
		{
			if(a=c)
			{
				cout<<"Die Zahlen sind gleichgross."<<endl;
			}
			else
			{
				if(a>c)
				{
					cout<<"Die groessten Zahlen sind:" a, b<<endl;
				}
				else
				{
					cout<<"Die groesste Zahl ist:" c<<endl;
				}
			}
		}
		else
		{
			if(b>c)
			{
				cout<<"Die groesste Zahl ist:" b<<endl;
			}
			else
			{
				cout"Die groessten Zahlen sind:" b, c<<endl;
			}
		}
	}
	return 0;
}
beide haben den selben fehler.
es wäre nett wenn ihr sie außerdem auch überfliegen könntet.
mfg
SoloTalent
 
Zuletzt bearbeitet:
Hallo SoloTalent,

zwischen dem Funktionskopf „int main()“ und dem Funktionsrumpf (beginnend mit „{“) einer Funktionsdefinition gehört kein Strichpunkt. Das sollte aber auch Visual Studio 2008 ankreiden (tut es bei mir auch), vielleicht ist das ein Übertragungsfehler?

Grüße,
Matthias
 
Abgesehen vom Semikolon sehe ich da noch ein paar Fehler:

-Vergleiche werden in C/C++ mit zwei Ist-Gleich-Zeichen angegeben:
if ( a == c )

-Bei der Ausgabe über cout musst du Texte und Variablen getrennt ausgeben:
cout << "Die grössten Zahlen sind: " << b << "," << c << endl
 
Hallo SoloTalent,

zwischen dem Funktionskopf „int main()“ und dem Funktionsrumpf (beginnend mit „{“) einer Funktionsdefinition gehört kein Strichpunkt. Das sollte aber auch Visual Studio 2008 ankreiden (tut es bei mir auch), vielleicht ist das ein Übertragungsfehler?

Grüße,
Matthias

danke dir, das programm funktioniert jetzt, war ja ein sehr einfacher fehler den ich nicht verstanden habe.

Abgesehen vom Semikolon sehe ich da noch ein paar Fehler:

-Vergleiche werden in C/C++ mit zwei Ist-Gleich-Zeichen angegeben:
if ( a == c )

-Bei der Ausgabe über cout musst du Texte und Variablen getrennt ausgeben:
cout << "Die grössten Zahlen sind: " << b << "," << c << endl

also das habe ihc nicht ganz verstanden bei den 2 zahlen ist das ja recht einfach da kommt einfach nur
cout<<"Die größte Zahl ist: " b<<endl;
doch ich habe halt das hier gerade versucht:
cout<<"Die größten Zahlen sind: "<<a<<","<<b<<endl;
doch da bekomme ich tonnen von fehlermeldungen

diese hier beziehen sich auf das programm dass ich geschrieben habe:
1>c:\users\oguzhan\desktop\og@schule\programme\groessere zahl\3 zahlen\3 zahlen.cpp(67): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'b'
1>c:\users\oguzhan\desktop\og@schule\programme\groessere zahl\3 zahlen\3 zahlen.cpp(67): error C2563: Listen der formalen Parameter stimmen nicht überein
1>c:\users\oguzhan\desktop\og@schule\programme\groessere zahl\3 zahlen\3 zahlen.cpp(67): error C2568: '<<': Auflösung der Funktionsüberladung nicht möglich

die anderen beziehen sich auf:
c:\program files\microsoft visual studio 10.0\vc\include\ostream(x)

x= es gibts mehrere meldungen zu der datei, welche mit unterschiedlichen zahlen bestückt ist(keine ahnung was das zu bedeuten hat)

mfg,
ps: bitte um schnelle antwort, da ich das bis morgen, den 9.12. machen muss und nur noch diese eine sache mit 2 variablen bei cout auszugeben fehlt :D
 
Zuletzt bearbeitet:
So da bin ich wieder,
doch es geht um ein anderes thema

ich wollte kein neues thema aufmachen und sinnlos threads spammen, wodurch ich mich dazu entschieden habe es hier reinzuposten.

meine aufgabe:

Schreiben Sie ein Programm, das nach Eingabe der Gesamtpunktzahl einer Klassenarbeit und der erreichten Punktzahl eines Schülers den erreichten Prozentwert und die dazugehörige Note ausgibt. Benutzen Sie dazu das Notenschema, das in Ihrer Klasse verwendet wird.

1. ich habe den IHK notenschlüssel benutzt.

nun zum eigentlichen problem.
also ich habe mich dran gesessen, überlegt, rumprobiert und komme nicht mehr weiter.
erstmal der quellcode den ich bis jetzt geschrieben habe:
Code:
#include "stdafx.h"
#include <iostream>
using namespace std;

int main()
{
	int G=0;
	int W=0;
	bool p;
	int note=1;

	cout<<"Geben Sie die Maximalpunktzahl ein: "<<
	cin>>G;
	cout<<endl;
	cout<<"Geben Sie die erreichte Punktzahl ein: "<<;
	cin>>W;
	cout<<endl;

	p= (W / G) * 100;

	note=if(30 < p >= 0)
			{
				cout<<"Die erreichte Note ist ungenuegend."<<endl;
			}
			else
			{
				if(50 < p >= 30)
				{
					cout<<"Die erreichte Note ist mangelhaft."<<endl;
				}
				else
				{
					if(67 < p >= 50)
					{
						cout<<"Die erreichte Note ist ausreichend."endl;
					}
					else
					{
						if(81 < p >= 67)
						{
							cout<<"Die erreichte Note ist befriedigend."endl;
						}
						else
						{
							if(92 < p >= 81)
							{
								cout<<"Die erreichte Note ist gut."<<endl;
							}
							else
							{
								cout<<"Die erreichte Note ist sehr gut."<<endl;
							}
						}
					}
				}
			}
		
	cout<<"Es wurden "<<p<<" Prozent erreicht."<<endl;
	note;
	system("pause");
	return 0;
}
also ich glaube bis zum Einlesen habe ich alles richtig doch danach hakt es wahrscheinlich.
Auch wenn es jetzt so vorkommt, als ob ich euch alles machen lassen will, will ich eigentlich nur herausfinden, was ich falsch gemacht habe. ich habe das mir bestmögliche zu diesem zeitpunkt geleistet und ich muss dazu sagen dass ich bis jetzt nur 2stunden in der schule C++ hatte und nicht wirklich durchblicke und da ich nicht einfach hingehen kann, nach rund mehr als 4 wochen C++-Unterricht, und der lehrerin fragen kann ob sie mir alles von vorne erklärt, bin ich nun hier und versuche initiative zu zeigen.
auch wenn ich einfach nur frage anstatt zu suchen.
ich bitte hiermit um euer verständnis.

MFG
Oguzhan
 
Warum ist p ein bool? Der Datentyp ist ist dafür gedacht, Wahr/Falsch (Ja/Nein etc) -Werrte zu speichern.
Nimm doch ein int.

Und "note=if(...){...}" ist sehr seltsam.
Was willst du da erreichen?

Weiters sind die ganzen else-Verschachtelungen eigentlich unnötig.

Nochwas: Solche Vergleiche...ob das gut geht?
30 < p >= 0
Eventuell vergleicht er da eine der zwei Zahlen mit dem True/False, ob die andere Bedingung erfüllt ist.
Sicherer wäre sowas:
p>=0&&p<30

Hier ausgebessert:
C++:
#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
	int g=0;
	int w=0;
	float p;

	cout<<"Geben Sie die Maximalpunktzahl ein: "<<
	cin>>h;
	cout<<"Geben Sie die erreichte Punktzahl ein: "<<;
	cin>>w;
	cout<<endl;

	p=(w/g)*100;

	if(p<0.00||p>100.00)cout<<"Ungueltige Eingabe."<<endl;
	else
	{
		cout<<"Die erreichte Note ist ";
		if(p<30.00)cout<<"ungenuegend";
		else if(p<50.00)cout<<"mangelhaft";
		else if(p<67.00)cout<<"ausreichend";
		else if(p<81.00)cout<<"befriedigend";
		else if(p<92.00)cout<<"gut";
		else cout<<"sehr gut";
		cout<<"."<<endl<<"Es wurden "<<p<<" Prozent erreicht."<<endl;
	}
	
	system("pause");
	return 0;
}

Gruß
 
Zuletzt bearbeitet:
1. das mit den p<>=0&&p<30 hatten wir mal in der schule, jetzt weiss ichs wieder damit wäre das natürlich viel sicherer haste recht. werde das auch gleich sofort anwenden.

2.zum bool: es scheint mir, als ob ich "bool" recht falsch verstanden habe. naja doch jetzt weiss ich, wofür man es braucht danke dir.

3.zu dem note=if und so weiter bereich:

schwer zu erklären, ich persönlich weiss natürlich was ich damit erreichen wollte doch mich richtig artikulieren, dass weiss ich gerade nicht. ich hoffe es ist ok, wenn ich ein wenig ehhm, und so oder ähnliches benutze. ich werde versuchen es oso genau wie möglich zu erklären.

also ich wollte damit bezwecken, dass note eines der cout<<... sachen ergibt und direkt die Note mit drin ist. also wenn ich jetzt zumbeispiel als maximalpunktzahl 100 habe, und erreichte punkte 0 habe, dann soll am ende note=cout<<"Die erreichte Note ist ungenügend."<<endl; sein.
wusste nicht wie ich das da einbetten soll also hab ich einfach intepretiert und versucht.
damit ich unten einfach nur note; schreiben muss und der dann automatisch den cout<<-befehl einfügt.

es wäre nett, wenn ihr vielleicht eine möglichkeit kennt, wie man das besser hinbekommt.

4. die rechnung zum ausrechnen des p's kann man so stehen lassen oder?

mfg
Oguzhan
 
Warum ist p ein bool? Der Datentyp ist ist dafür gedacht, Wahr/Falsch (Ja/Nein etc) -Werrte zu speichern.
Nimm doch ein int.

Und "note=if(...){...}" ist sehr seltsam.
Was willst du da erreichen?

Weiters sind die ganzen else-Verschachtelungen eigentlich unnötig.

Nochwas: Solche Vergleiche...ob das gut geht?
30 < p >= 0
Eventuell vergleicht er da eine der zwei Zahlen mit dem True/False, ob die andere Bedingung erfüllt ist.
Sicherer wäre sowas:
p>=0&&p<30

Hier ausgebessert:
C++:
#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
	int g=0;
	int w=0;
	float p;

	cout<<"Geben Sie die Maximalpunktzahl ein: "<<
	cin>>h;
	cout<<"Geben Sie die erreichte Punktzahl ein: "<<;
	cin>>w;
	cout<<endl;

	p=(w/g)*100;

	if(p<0.00||p>100.00)cout<<"Ungueltige Eingabe."<<endl;
	else
	{
		cout<<"Die erreichte Note ist ";
		if(p<30.00)cout<<"ungenuegend";
		else if(p<50.00)cout<<"mangelhaft";
		else if(p<67.00)cout<<"ausreichend";
		else if(p<81.00)cout<<"befriedigend";
		else if(p<92.00)cout<<"gut";
		else cout<<"sehr gut";
		cout<<"."<<endl<<"Es wurden "<<p<<" Prozent erreicht."<<endl;
	}
	
	system("pause");
	return 0;
}

Gruß

hmm dazu möchte ich gerne sagen, dass es recht gut aussieht , doch wir das so noch nicht in der schule gemacht haben und meine lehrerin dann denken würde, dass ich das nicht selbst gemacht habe.
doch ich werde mir das programm seperat speichern wenn es recht ist.

mfg

EDIT: also ich habe das programm kopiert und der gleichen doch es sind fehler aufgetaucht, könnte es daran liegen, dass du keine geschweiften klammern und so weiter hast? ich probier das mal :D
 
Zuletzt bearbeitet:
Zurück