Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Stapel

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
03.05.2008, 10:29 Uhr
~orlandooo
Gast


Halllo,

Ich hab eine aufgabe die heist:
Entwerfen Sie ein Programm (Datenentwurf und Modulentwurf als Struktogramm) zum
Hinzufügen von beliebig vielen Elementen in einen Stapel (stack) nach Wunsch.
Als Nutzdaten sollen jeweils der Name, das Alter und das Gehalt einer Person dienen.
Sehen Sie für jedes Element des Stapels einen passenden Strukturtyp vor.
Dieses Hinzufügen soll ein separates Modul: input übernehmen.
Anschließend sollen alle Elemente des Stapels gelesen, damit ausgegeben und gelöscht
werden. Dies soll ein separates Modul: output übernehmen.


Ich verstehe nicht wie ich das mit:

Sehen Sie für jedes Element des Stapels einen passenden Strukturtyp vor.

gemeint ist.



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


struct personen {

   char name[50];
   int alter;
   float gehalt;
   struct personen *last;

};

struct personen *current = NULL;

int input(){

   struct personen *new = NULL;
   new = (struct personen *)malloc( sizeof( struct personen ) );

   if( new == NULL )
      {
         printf( "Kein Speicherplatz vorhanden!\n" );
         return 0;
      }

   //--------------------------------------------------------------------------------

   char _name[50];
   int _alter;
   float _gehalt;

   printf( "\n\t[ E I N G A B E ] \n");

   printf( "\nName...........:" );
    printf( "\nEingabe: ");
   scanf( "%s", _name ); fflush( stdin );

    printf( "\nAlter..........:" );
    printf( "\nEingabe: " );
   scanf( "%i", &_alter ); fflush( stdin );

    printf( "\nGehalt..........:" );
    printf( "\nEingabe: " );
   scanf( "%f", &_gehalt ); fflush( stdin );

   //--------------------------------------------------------------------------------

   strcpy( new->name, _name );
   new->alter = _alter;
   new->gehalt = _gehalt;

   if( current == NULL )
      {
         new->last = NULL;
      }
      else
      {
         new->last = current;
      }

   current = new;

   return 1;

}

int output() {

   printf( "\n\n\t[ A U S G A B E ] \n");

   if( current == NULL )
      {
         printf( "\nKEIN STRUCT VORHANDEN!\n");
      }
      else
      {
         printf( "\nName...........: %s\nAlter..........: %i\nGehalt.........: %.2f\n", current->name, current->alter, current->gehalt );

         struct personen *new_current = NULL;
         new_current = current->last;
         free(current);
         current = new_current;
      }

   return 1;

}

pruefung()
{
    printf("\n\n:::MENUE:::\n(1)Eingabe\nAusgabe(2)\nExit(0)");
    int eingabe;

    while(1)
    {
            
    if (eingabe 0 < || eingabe > 2)
    {
    printf("[Ungueltige Eingabe!]");
    }
    
    if (eingabe == 2 && current == NULL)
    {
    printf("\n\n[Stapel leer!]");
    printf("[Bitte Eingabe taetigen!]");
    }
    else
printf("\n");
        return eingabe;
}



int main() {

while(1)

    {
            
switch (pruefung())

{

    case 1:
        input ();
        break;

    case 2:
        output();
        break;

    case 3:
        printf("[Programm beendet!]");
        return 0;
    }

}
}




Mein Programm bis jetzt
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.05.2008, 14:13 Uhr
xXx
Devil


Du hast aber sicher nichts mit www.tutorials.de/forum/c-c/311235-c-stapel-stack.html zu tun, oder?

Aber ich mein eine Suchmaschine zu nutzen ist natürlich total uncool.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.05.2008, 09:26 Uhr
RHBaum




Zitat:
Sehen Sie für jedes Element des Stapels einen passenden Strukturtyp vor.

Klingt irgendwie auch total doof ...

wenn man das woertlich nimmt und implementiert, muesste der Stack Zeiger verwalten, und die Objecte in ner Fabrik fuer erzeugt werden ....

Aber ich denk mal es ist einfach nur saubloed formuliert, und muesste heissen ...
"Sehen Sie für die Elemente des Stapels einen passenden Strukturtyp vor"


Ciao ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
09.05.2008, 09:55 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


kleiner tipp:


C++:
struct personen *new = NULL;
   new = (struct personen *)malloc( sizeof( struct personen ) );



"new" sollte man als variablenname nicht umbedingt verwenden, wenn du das mal mit nem C++-Compiler kompilieren willst, fliegt dir der Code um die Ohren.

Ansonsten:


C++:
typedef struct personen {

   char name[50];
   int alter;
   float gehalt;
   struct personen *last;

} personen_t;



vereinfacht das ganze zu:


C++:
personen_t *neu = NULL;
neu = malloc( sizeof( personen_t ) );



und man muss nicht jedes vorkommen von "struct personen" ggf ändern wenn man aus dem struct iwas anderes machen sollte irgendwann

Auch solltest du globale variablen vermeiden, oder diese zumindest nur für das modul sichtbar machen (static)
(immer kleinstmöglichen scope/geltungsbereich verwenden)
--
class God : public ChuckNorris { };

Dieser Post wurde am 09.05.2008 um 12:01 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
09.05.2008, 11:30 Uhr
ao

(Operator)


<gebetsmühle on>
... und BITTE die Rückgabe von malloc nicht casten! Entweder ist das hier ein C-Programm, dann geht das ohne Cast. Oder es ist C++, dann nimmt man kein malloc, sondern new.
<gebetsmühle off>
 
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: