Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Warum funzt es nicht?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.04.2004, 17:35 Uhr
Desrod



Hallo,

musste ein Beispielprog für Arrays schreiben. Dabei hat mir mein Schwager etwas geholfen und bei ihm unter Borland Builder 5 hat es gestern noch gefunzt. Heute bei mir unter Borland 6 und Dev C++ funzt es nicht mehr.

Sinn war es, daß der User Zahlen eingibt und diese dann sortiert ausgegeben werden.

Hier mal der Quellcode:


C++:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>

//Konstante für Arraydimensionen
#define ARRAYELEMENTE 5

/*
Beispielprogramm Referat Arrays 2004-04-19
*/


//Funktionsprototypen
int einlesen();
int sort();
int ausgabe();

//globale Variablen
int spielzahlen[ARRAYELEMENTE]; //globale Dekl. weil Call by Reference mit Arrays nur über Zeiger int sortierer[ARRAYELEMENTE];

//Hauptfunktion, steuert Programmablauf
int main()
{
    int returneinlesen = 1;
   int returnsort = 1;
    int returnausgabe = 1;

    returneinlesen=einlesen();   //Funktion einlesen() wird aufgerufen

    if (returneinlesen!=0)      //Ablaufprüfung für Funktion einlesen()
   {
        cout << "Es ist ein Fehler aufgetreten in der Funktion einlesen(). programm wird beendet!";
      exit(EXIT_FAILURE);     //Programm wird abgebrochen - System gibt Fehlermeldung
   }

    returnsort=sort();        //Funktion sort() wird aufgerufen

    if (returnsort!=0)        //Ablaufprüfung für Funktion sort()
   {
       cout << "Es ist ein Fehler aufgetreten in der Funktion sort(). programm wird beendet!";
       exit(EXIT_FAILURE);    //Programm wird abgebrochen - System gibt Fehlermeldung
   }

   returnausgabe=ausgabe();  //Funktion ausgabe() wird aufgerufen

    if (returnausgabe!=0)     //Ablaufprüfung für Funktion ausgabe()
   {
       cout << "Es ist ein Fehler aufgetreten in der Funktion ausgabe(). programm wird beendet!";
       exit(EXIT_FAILURE);    //Programm wird abgebrochen - System gibt Fehlermeldung
   }

    getch();
    return 0;
}

//Funktion zum Einlesen der Zahlen
int einlesen()
{
    int i=1, temp=0;

   for (i=1; i<=ARRAYELEMENTE ; i++)   //Jedes Feld im Array wird mit 0 initialisiert
         spielzahlen[i-1]=0;

   for (i=1; i<= ARRAYELEMENTE; i++)  //Anzalhl ARRAYELEMENTE bestimmt Wiederholungsschritte
   {
       cout << "*************Sortierer***************" << endl;
      cout << "\n\nBitte geben Sie die " << i << ". Zahl ein : ";
      cin >> temp;
      clrscr();
      //Prüfung ob Zahl schon vorhanden
      while (temp==spielzahlen[0]||temp==spielzahlen[1]||temp==spielzahlen[2]||temp==spielzahlen[3]||temp==spielzahlen[4]||temp==spielzahlen[5])
      {
          cout << "*************Sortierer***************" << endl;
         cout << "Bitte keine Zahlen doppelt nennen! ";
         cout << "\n\nBitte geben Sie die " << i << ". Zahl ein : ";
         cin >> temp;
         clrscr();
       }

      spielzahlen[i-1]=temp;   //Eingabe wird im Arrayfeld gespeichert
    }
   return 0;
}

//Funktion zum Sortieren
int sort()
{
    int sortvar=0;
   int anzkleiner=0;
   int i=0, k=0;

   for (i=1; i <= ARRAYELEMENTE ; i++) //Jedes Feld im Array wird mit 0 initialisiert
       sortierer[i-1]=0;

   for (i=1; i <= ARRAYELEMENTE; i++) //Anzalhl ARRAYELEMENTE bestimmt Wiederholungsschritte
   {
         sortvar=spielzahlen[i-1];      //Der Reihe nach wird jedes Element aus dem Array geholt

      for (k=1; k <= ARRAYELEMENTE; k++) //Vergleicht auktuelles Element mit allen Elementen und zählt Anzahl kleinerer Elemente
      {
          if (spielzahlen[k-1]<sortvar)
         {
             anzkleiner++;
         }
      }

         sortierer[anzkleiner] = sortvar; //Aktuelles Element wird an korrekter Stelle in neues Array geschrieben

      anzkleiner=0;   //Zählvariable wir auf 0 gesetzt, damit nicht zum vorherigen addiert wird
   }
   return 0;
}

//Funktion zur Ausgabe
int ausgabe()
{
    int i=0;
   clrscr();
   cout << "Hier die sortierten Werte: " << endl << endl;
   for (i=1; i<= ARRAYELEMENTE; i++)      //Sortierte Elemente werden der Reihe nach ausgegeben
   {
         cout << sortierer[i-1] << endl;
   }
   return 0;
}



Hoffe mir kann jemand helfen! Wäre wirklich sehr dankbar!!!

!

Dieser Post wurde am 18.04.2004 um 17:58 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.04.2004, 18:46 Uhr
Oliver
S2-Pixelgeneral


Was genau geht denn nicht? (Syntaxfehler, Logikfehler)
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.04.2004, 20:32 Uhr
Desrod



Habe den Fehler gefunden!

Das "int sortierer[ARRAYELEMENTE];" muss irgentwie in den Kommentar gerutscht sein!

Deshalb war das Array sortierer nicht "vordefiniert".

Aber trotzdem vielen Dank Oliver Müller!!!!!

!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
19.04.2004, 15:35 Uhr
~hmm
Gast


du schreibst am anfang

C++:
#define ARRAYElemente 5



wo liegt der unterschied zwischen einer globalen deklaration einer konstanten mit dem wert 5?
wann sollte man define und wann globale variablen / konstanten verwenden?
mfg
Cmms
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.04.2004, 19:50 Uhr
typecast
aka loddab
(Operator)


@hmm: #define ist ein Zeichen für den Präprozessor jedes vorkommen von ArrayElement durch 5 zu ersetzen. Dass geschieht, bevor der Code compiliert wird.

Eine Konstante wird dann erst beim Kompilieren behandelt. Was der Kompiler damit macht kann ich dir leider nicht sagen. Aber so weit ich weiß war geplant, das die Constvariablen in C++ die #define-Anweisungen für Werte ersetzen sollen (der inline-Befehl soll die #defines üfr Funktionen ersetzen)

Du kannst also beides benutzen. Es sollte keinen Unterschied machen. Allerdings habe ich mal gehört, dass die meisten Compiler bei inline-Funktionenn doch kein inline machen (allerdings ist das eine Information aus dritte Hand und ich weiß nicht was ich davon halten soll)
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: