Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » SChnell Benötige hilfe heute nich

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
22.04.2008, 19:25 Uhr
~Billy
Gast


habe eine frage wenn ich das program starte schließt es sich sobald ich auf sortieren geh bitte brauche hilfe


C++:
#include <cstdlib>
#include <iostream>

using namespace std;
void Eingabe (string *Namen)
{
     cout << "Bitte geben sie die Namen ein."<<endl;
     for (int i=0;i<20;++i)
     {
         cout <<i+1<<" Name: ";
         cin >> Namen[i];
        
         if (Namen[i]=="0")
         {
          break;
          
         }
        
          
     }
}
void Sortieren (string *Namen)
{
    
     for (int n=0;n<20;++n)
     {
         for(int i=0;i<20;++i)
         {
            if(Namen[i]>Namen[i+1])
             {
                    string a=Namen[i];
                    Namen[i]=Namen[i+1];
                    Namen[i+1]=a;              
             }
         }
     }  
}
void Ausgabe(string *Namen)
{
   for (int i=0;i<20;++i)
     {
         cout << i+1<<":"<<Namen[i]<< endl;
     }
}
void Menu(string *Namen,int *a)
{
     int menu;
    
     cout << "Menu"<< endl<<endl << "(1) Eingabe"<< endl<<"(2) Sortieren" << endl << "(3) Ausgabe"<<endl<<"(4) Beenden"<<endl <<endl;
     cin >> menu;
     switch (menu)
     {
            case 1:
                 cout << "Eingabe"<< endl;
                 Eingabe(Namen);
                
                 break;
            case 2:
                 cout << "Sortieren"<< endl;
                 Sortieren(Namen);
                
                 break;
            case 3:
                 cout << "Ausgabe" << endl;
                 Ausgabe(Namen);
                
                 break;
            case 4:
                 cout <<"Beenden";
                 int a=2;
                 break;
     }
}
int main(int argc, char *argv[])
{
    const int i=20;
    string Namen[i];
    
    int a=0;
    
    do
    {
    Menu(Namen,&a);
    }
    while (a<2);
    system("PAUSE");
    return EXIT_SUCCESS;
}


Dieser Post wurde am 22.04.2008 um 19:29 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.04.2008, 22:02 Uhr
öni



in der main funktion steht doch das es die funktion Menu nur solange aufrufen soll solange a kleiner ist als 2 ....und da sortiern a=2 ist beendet es die do-while-schleife.....ich hoffe das ist die lösung ne andere möglichkeit sehe ich keine....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.04.2008, 23:16 Uhr
0xdeadbeef
Gott
(Operator)


In Sortieren ist Namen ein Array von 20 Elementen, d.h. Namen[0] bis Namen[19]. Du lässt i von 0 bis 19 laufen und dereferenzierst dann Namen[i + 1], sprich bis Namen[20], wo kein gültiger string steht. Das erzeugt undefiniertes Verhalten, was in diesem Fall höchstwahrscheinlich einen segfault bedeutet.

Im Übrigen wird das a in main nirgendwo verändert, weil 1. im Switch der Beenden-Teil nie erreicht wird und 2. der Beenden-Teil einen eigenen int a erzeugt, der den Zeiger aus der Parameterliste verdeckt.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 22.04.2008 um 23:18 Uhr von 0xdeadbeef editiert.
 
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: