anfänger hat probleme beim complieren



  • hallo,
    ich hab ein problem mit einem programm das ich morgen mittag abgeben muss..
    es ist nicht die feine art so auf den letzten drücker um hilfe zu bitten, dazu kommt das ich mich nur sehr schlecht mit der materie auskenne, da bitte ich bei beidem um verzeihung 😃

    also ich habe hier ein fertiges programm,
    das problem ist das mein compiler(cvisualc++ 2005 express)
    es nicht kompilieren mag,
    weil folgende fehler gemeldet werden:

    bla2.cpp(89) : error C3861: "system": Bezeichner wurde nicht gefunden.
    bla2.cpp(148) : error C3861: "strcmp": Bezeichner wurde nicht gefunden.
    bla2.cpp(172) : error C3861: "system": Bezeichner wurde nicht gefunden.

    ich vermute das ich hier gegen eine forenkovention verstoße wenn ich den text direkt reinkopiere, hab aber in der FAQ keine hinweis gefunden sry ..(vlt hilft ja dieser codebutton?)

    // bla2.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
    //
    
    #inculde "stdafx"
    #include <stdio>
    #include <stdlib>
    #include <string>
    
    struct Datensatz
    {
    
    	char name[100];
    	int nummer;
    	int anzahl;
    
    };
    int _tmain(int argc, _TCHAR* argv[])
    {
    
    	struct Datensatz* datensaetze = 0;
    	int* sortiert = 0;
    	int anzahl = 0;
    
    	int eingabe = 2;
    	do
    	{
    
    		if ( eingabe == 1 )
    		{
    
    			// Neuen Datensatz füllen
    
    			struct Datensatz neu;
    
    			printf("NEUEN DATENSATZ HINZUFUEGEN\n===========================\n\n");
    			printf("Name des Postens: ");
    			scanf("%s", neu.name);
    			printf("Teilenummer: ");
    			scanf("%d", &(neu.nummer));
    			printf("Anzahl: ");
    			scanf("%d", &(neu.anzahl));
    
    			// Alte Datensätze mit neuem speichern
    
    			FILE* f = fopen("liste.txt","a");
    			fprintf(f, "\n%s\t%d\t%d", neu.name, neu.nummer, neu.anzahl);
    			fclose(f);
    
    			delete[] sortiert;
    			delete[] datensaetze;
    			sortiert = 0;
    			datensaetze = 0;
    
    		}
    
    		if ( datensaetze == 0 )
    		{
    
    			// Datensätze einlesen
    
    			FILE* f = fopen("liste.txt","r");
    
    			// Datensätze zählen (Anzahl der Zeilenumbrüche + 1)
    
    			anzahl = 1;
    			while ( !feof(f) ) 
    			{
    
    				if ( fgetc(f) == '\n' ) anzahl++;
    
    			}
    
    			// Auf Dateianfang zurücksetzen
    
    			fseek(f, 0, SEEK_SET);
    
    			// Datensätze einlesen
    
    			datensaetze = new struct Datensatz[anzahl];
    			sortiert = new int[anzahl];
    			for( int i = 0; i < anzahl; i++ )
    			{
    
    				fscanf(f, "%s\t%d\t%d\n", datensaetze[i].name, &(datensaetze[i].nummer), &(datensaetze[i].anzahl));
    
    			}
    
    			fclose(f);
    			system("CLS");
    
    		}
    
    		printf("VERWALTUNG\n==========\n\n");
    		printf("[1] Neuen Datensatz hinzufuegen\n\n");
    		printf("[2] Nach Bezeichnung sortieren\n");
    		printf("[3] Nach Nummer sortieren\n");
    		printf("[4] Nach Anzahl sortieren\n");
    		printf("\n\n");
    
    		// Sortierliste initialisieren
    		for ( int i = 0; i < anzahl; i++ ) sortiert[i] = i;
    		bool verschoben = true;
    		char zwischenspeicher = 0;
    
    		printf("Artikel\t\tNummer\tAnzahl\n-------\t\t------\t------\n");
    
    		do
    		{
    
    			verschoben = false;
    			for ( int i = 0; i < (anzahl - 1); i++ ) 
    			{
    
    				// Nach Anzahl sortieren
    				if ( eingabe == 4 )
    				{
    
    					if ( datensaetze[sortiert[i]].anzahl > datensaetze[sortiert[i+1]].anzahl )
    					{
    
    						zwischenspeicher = sortiert[i];
    						sortiert[i] = sortiert[i+1];
    						sortiert[i+1] = zwischenspeicher;
    						verschoben = true;
    
    					}
    
    				}
    				// Nach Nummer sortieren
    				if ( eingabe == 3 )
    				{
    
    					if ( datensaetze[sortiert[i]].nummer > datensaetze[sortiert[i+1]].nummer )
    					{
    
    						zwischenspeicher = sortiert[i];
    						sortiert[i] = sortiert[i+1];
    						sortiert[i+1] = zwischenspeicher;
    						verschoben = true;
    
    					}
    
    				}	
    				// Nach Namen sortieren
    				if ( eingabe == 2 )
    				{
    
    					if ( strcmp(datensaetze[sortiert[i]].name, datensaetze[sortiert[i+1]].name) == 1 )
    					{
    
    						zwischenspeicher = sortiert[i];
    						sortiert[i] = sortiert[i+1];
    						sortiert[i+1] = zwischenspeicher;
    						verschoben = true;
    
    					}
    
    				}
    
    			}
    
    		} while(verschoben);
    
    		for ( int i = 0; i < anzahl; i++ )
    		{
    
    			printf("%s\t%d\t%d\n", datensaetze[sortiert[i]].name, datensaetze[sortiert[i]].nummer, datensaetze[sortiert[i]].anzahl);
    
    		}
    
    		scanf("%d",&eingabe);
    		system("CLS");
    
    	} while ( eingabe == 1 || eingabe == 2 || eingabe == 3 || eingabe == 4);
    
    	if ( sortiert != 0 ) delete[] sortiert;
    	if ( datensaetze != 0 ) delete[] datensaetze;
    
    	return 0;
    }
    

    vielen dank falls mal einer schauen könnte woran es liegt ..



  • also erstmal:

    #include "stdafx.h"
    
    #include <cstdio> 
    #include <cstdlib>
    

    bzw. wenn du schon die alten Header verwenden willst

    #include <stdio.h> 
    #include <stdlib.h>
    

    vermutlich meinst du auch den alten C-Header <string.h> bzw. <cstring>, <string> enthält die Stringklasse der C++ Standardbibliothek (deren Verwendung deinem Programm übrigens sehr gut tun würde).

    Mal was zu deinem Code.
    Das sind fast ausschließlich die alten schlechten C Sprachmittel die du verwendest - dein Programm scheint aber als C++ Programm geplant zu sein und du verwendest ja auch die Operatoren new und delete.
    ➡ ich wäre nicht erfreut, wenn ich dein Lehrer wäre 😉

    Btw. "system"-Aufrufe sind selten eine gute Idee ...


Anmelden zum Antworten