tworzenie kolejnych struktur
Ostatnio zmodyfikowano 2017-01-07 00:02
mikewazowski Temat założony przez niniejszego użytkownika |
tworzenie kolejnych struktur » 2017-01-06 22:14:53 mam program w którym struktury są zapisywane na liście, chciałabym żeby z każdym kolejnym dodaniem osoby wartość id wzrastała o 1 zaczynając od id=1 dla pierwszej struktury i w tym momencie kod przestaje działać (tzn dodają się osoby na liste, dane są zapisywane ale id nie wynosi 1, ani nie wzrasta) struct Dane { string imie; string nazwisko; int id; }; struct Student { Dane dane; Student * next; Student * prev; };
Student * stworzelement() { Student * element; string imie; string nazwisko; int id; cout << "podaj ID: " << id << endl; cout << "podaj imie: "; cin >> imie; cout << "podaj nazwisko: "; cin >> nazwisko; element = new Student(); element->next = NULL; element->prev = NULL; element->dane.id = id; element->dane.imie = imie; element->dane.nazwisko = nazwisko; return element; } int dodajkoniec( Student ** head ) { Student * pom; int id; if( * head == NULL ) { id = 1; Student * tmp = stworzelement(); * head = tmp; cout << "***dodano do bazy***" << endl; } else { id++; Student * tmp = stworzelement(); pom = * head; while( pom->next != NULL ) { pom = pom->next; id++; } tmp->prev = pom; pom->next = tmp; cout << "***dodano do bazy***" << endl; } }
|
|
karambaHZP |
» 2017-01-06 22:54:17 Deklarujesz lokalnie w funkcjach zmienną id zakrywając pole o nazwie id . Robisz na tej lokalnej operacje, a po opuszczeniu funkcji po prostu jest niszczona i pozostaje tylko nietknięta wartość pola. #include <iostream>
int main() { int a { 1 }; { int a { 3 }; ++a; std::cout << "lokalnie a = " << a << '\n'; } std::cout << "w main() a = " << a << '\n'; } |
|
mikewazowski Temat założony przez niniejszego użytkownika |
» 2017-01-06 23:12:53 tylko że zależy mi by id było przypisane do konkretnej struktury tak by można wyszukać daną strukturę po numerze id więc twoja propozycja odpada, chyba że źle zrozumiałam jak działa kod który napisałeś |
|
karambaHZP |
» 2017-01-06 23:42:11 #include <iostream> #include <string> using namespace std;
struct Dane { string imie; string nazwisko; int id; }; struct Student { Dane dane; Student * next; Student * prev; static int num_of_students; };
int Student::num_of_students = 0;
Student * stworzelement() { Student * element; string imie; string nazwisko; int id = ++Student::num_of_students; cout << "podaj ID: " << id << endl; cout << "podaj imie: "; cin >> imie; cout << "podaj nazwisko: "; cin >> nazwisko; element = new Student(); element->next = NULL; element->prev = NULL; element->dane.id = id; element->dane.imie = imie; element->dane.nazwisko = nazwisko; return element; }
void dodajkoniec( Student * head ) { Student * pom; if( head == NULL ) { Student * tmp = stworzelement(); head = tmp; cout << "***dodano do bazy***" << endl; } else { Student * tmp = stworzelement(); pom = head; while( pom->next != NULL ) { pom = pom->next; } tmp->prev = pom; pom->next = tmp; cout << "***dodano do bazy***" << endl; } }
int main() { Student * list = nullptr; dodajkoniec( list ); dodajkoniec( list ); } |
|
mikewazowski Temat założony przez niniejszego użytkownika |
» 2017-01-07 00:02:32 działa jak trzeba, dziękuje bardzo, zamykam |
|
« 1 » |