Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.01.2013, 09:37

Zeiger auf Struktur

Kann mir jemand sagen, warum ich nicht auf eine Array Structur Zeigen kann?
(Oder geht das, wie ich es hier habe in dieser Richtung gar net?)
(Hoffe der code ist nicht so unübersichtlich)





main.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>#include <string>#include "funktionen.h"using namespace std;
int main(){//Variabeln/////////////////////  int konto_nr = 0;   neues_konto konto[100]; int menu_auswahl = 0;
//Resetten von der Menu Auswahl  goto_menu:  menu_auswahl = 0; konto_nr = 0; system("cls");
    menu_show();
    cin>>menu_auswahl;
    switch (menu_auswahl)   {   case 1:     system("cls");      cout<<"-------------------------"<< endl;       cout<<"Ein neues Konto erstellen"<< endl;       cout<<"-------------------------"<< endl;       cout<< endl;
        konto_new(&konto_nr, &konto[100]);
        system("pause");        goto goto_menu;
        break;  case 2:     system("cls");      cout<<"-------------------------"<< endl;       cout<<"Ein Konto einsehen       "<< endl;       cout<<"-------------------------"<< endl;       cout<< endl;
        cout<<"Bitte Konto Nr eingeben:"<< endl;        cin>>konto_nr;
        cout<<konto[konto_nr].name<< endl;      cout<<konto[konto_nr].vorname<< endl;       cout<<konto[konto_nr].telefon<< endl;       cout<<konto[konto_nr].mobil<< endl;     cout<<konto[konto_nr].guthaben<< endl;
        system("pause");        goto goto_menu;
        break;  default: return 0;  }   system("pause");}


funktionen.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <iostream>using namespace std;
void menu_show(){   cout<<"----------------------------"<< endl;    cout<<"Bitte eine Auswahl treffen: "<< endl;    cout<<"1: Ein Konto erstellen      "<< endl;    cout<<"2: Ein Konto einsehen       "<< endl;    cout<<"----------------------------"<< endl;    return;}
void konto_new(int *konto_nr, neues_konto *konto[100]){ cout<<"Bitte Konto Nr. eingeben:"<< endl;   cin>>*konto_nr;
    cout<<"Bitte Nachnamen eingeben:"<< endl;   cin>>*konto[*konto_nr].name;
    cout<<"Bitte Vornamen eingeben:"<< endl;    cin>>*konto[*konto_nr].vorname;
    cout<<"Bitte Telefon-Nummer eingeben:"<< endl;  cin>>*konto[*konto_nr].telefon;
    cout<<"Bitte Handy-Nummer eingeben:"<< endl;    cin>>*konto[*konto_nr].mobil;
    cout<<"Bitte Guthaben eingeben:"<< endl;    cin>>*konto[*konto_nr].guthaben;}
    struct neues_konto  {   public:     string name;        string vorname;     string telefon;     string mobil;       string guthaben;    };


Alta warum formatiert der die Zeilen hier immer so?
Habe jetzt nochn textfile hochgeladen.
»DuffCola« hat folgende Datei angehängt:
  • c++.txt (2,23 kB - 92 mal heruntergeladen - zuletzt: 23.05.2024, 02:41)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DuffCola« (19.01.2013, 09:43)


Techie

Alter Hase

Beiträge: 717

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

2

19.01.2013, 10:02

Dein Code hat einen Fehler ( logisch gesehen ). Was passiert wenn der Nutzer gleich auf die Nummer 2 geht? Du würdest dann versuchen auf undefinierte Speicherbereiche zugreifen.
Außerdem zeugt die Verwendung von "goto" von einem schlecht durchdachten Design.

Dann verwendest du die Struktur neues_konto " bevor du sie überhaupt definiert hast!

Und abgesehen verstehe ich hier den Sinn der Verwendung der Zeiger nicht, vorallem nicht diese als Parameter für "neues_Konto"-Funktion.

Gruß Techie :|

:
Wieso definierst du die Variabeln der Struktur als public ? Ich bin mir nicht sicher ,ob der Compiler das überhaupt ( also überhaupt irgendeiner ) annehmen wird.
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Techie« (19.01.2013, 10:08) aus folgendem Grund: Weiterer Fehler ist mir aufgefallen :)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

19.01.2013, 10:23

Ganz ehrlich, lies doch erst mal die Grundlagen. Wenn ich sowas sehe, weiß ich gar nicht, auf welchen Unfug ich zuerst antworten sollte:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
konto_new(&konto_nr, &konto[100]);

void konto_new(int *konto_nr, neues_konto *konto[100])
{
   cout<<"Bitte Konto Nr. eingeben:"<< endl;
   cin>>*konto_nr;
   cout<<"Bitte Nachnamen eingeben:"<< endl;
   cin>>*konto[*konto_nr].name;
   cout<<"Bitte Vornamen eingeben:"<< endl;
   cin>>*konto[*konto_nr].vorname;

Die wichtigste Frage, die sich mir dabei stellt: Warum zum Geier brauchst Du da überhaupt Pointer?
Davon mal abgesehen, ist die Idee hinter dem Code schon total crazy. Eigentlich sollte man EIN Konto in einer Funktion eingeben lassen, dieses als Return-Wert zurückliefern und dann in den Array packen. Nicht den kompletten Array übergeben, den Index benutzen und den Index für Call-by-reference als Pointer deklarieren. Da geht einiges gründlich durcheinander.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

19.01.2013, 10:37

Also die Pointer benutze ich nur, da ich nur etwas üben möchte mit denen um zu gehen.
Und wie kann ich denn ohne den goto Befehl wieder ins Menu kommen?

5

19.01.2013, 10:57

Structur

Wie kann ich denn aus der Structur einen Variable aus main.cpp ändern?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

19.01.2013, 11:19

Bitte tu uns allen einen Gefallen und LIES ein Buch. Sämtliche Diskussionen hier würden Dich gnadenlos überfordern oder uns dazu zwingen ein komplettes Buch hier abzutippen. Hilfe wird ja gern gegeben, aber um Himmels Willen, lern doch vorher erst einmal selbst etwas - irgend etwas.
Du willst mit Pointern arbeiten, brauchst aber ein goto, weil Du IF, WHILE, BREAK und RETURN nicht verstanden hast. Ehrlich, das entbehrt jeder notwendigen Grundlage!
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

7

19.01.2013, 12:09

OH

Na klar habe ich das verstanden^^
Und ich habe auch bücher gelsen...
Nur kam in meinem Buch ganz plötzlich z.b. return dazu ohne zu erklären was das jetzt genau bringt...

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

8

19.01.2013, 12:14

Na klar habe ich das verstanden^^
Und ich habe auch bücher gelsen...
Nur kam in meinem Buch ganz plötzlich z.b. return dazu ohne zu erklären was das jetzt genau bringt...

Welches Buch denn?
Im anderen Thread habe ich dir ja bereits eine Buch Empfehlung gegeben.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

19.01.2013, 13:10

Gut, dann lies es. Lies es komplett.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige