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 ...