Listy dynamiczne.

0

Witam,
Mam taki problem. Stworzyłem strukturę danych. Wybieram ile osób chcę przypisać i wprowadzam dane. Potem chce je wyświetlić i tutaj zaczyna się problem.

main.cpp


#include "funkcje.h"

sOsoba *student = 0;
int n;
int main()
{
	while(1)
	{
		wyswietl_menu();
		char a;
		a=_getch();
		switch(a)
		{
		case '1':
			{
				cout<<"Ile osob chcesz wprowadzic?"<<endl;
				cin>>n;
				student = new sOsoba[n];
				wprowadz_dane(student,n);
				system("pause");
				system("cls");
				break;
			}
		case '2':
			{
				wyswietl_dane(student, n);
				system("pause");
				system("cls");
				break;

			}

		}


	}

funkcje.cpp

#include "funkcje.h"

sOsoba student;

void wyswietl_menu()
{
	cout<<"Menu:"<<endl;
	cout<<"1. Wprowadz dane osob"<<endl;
	cout<<"2. Wyswietl dane osob"<<endl;
	cout<<"3. Szukaj osobe"<<endl;
	cout<<"X. Wyjscie"<<endl;
}

void wprowadz_dane(sOsoba *student, int n)
{
	for(int a=0; a<n; a++)
	{
	cout<<"Wprowadz dane " <<a+1<< " osoby"<<endl;
	cout<<"Podaj imie"<<endl;
	cin>>student->imie,20;
	cout<<"Podaj nazwisko"<<endl;
	cin>>student->nazwisko,20;
	}
}

void wyswietl_dane(sOsoba *student, int n)
{
	for(int a=0; a<n; a++)
	{
		cout<<student[a].imie<<endl;
		cout<<student[a].nazwisko<<endl;
	}
}

funkcje.h

#ifndef _naglowki_h
#define _naglowki_h

#include <stdio.h>
#include <iostream>
#include <math.h>
#include <conio.h>

using namespace std;

struct sOsoba
{
	char imie[20];
	char nazwisko[20];
};

void wyswietl_menu();
void wprowadz_dane(sOsoba *student, int n);
void wyswietl_dane(sOsoba *student, int n);



#endif
0

Ech

for(int a=0; a<n; a++)
{
  cout<<"Wprowadz dane " <<a+1<< " osoby"<<endl;
  cout<<"Podaj imie"<<endl;
  cin>>student->imie,20;
  cout<<"Podaj nazwisko"<<endl;
  cin>>student->nazwisko,20;
}

Pokaż mi gdzie w tym kodzie wykorzystujesz licznik 'a'. Dokładniej: skoro dostałeś jako argument wskaźnik pokazujacy na tablicę to czemu wszystko wpisujesz do pierwszego elementu? Może mialo być:

for(int a=0; a<n; a++)
{
  cout<<"Wprowadz dane " <<a+1<< " osoby"<<endl;
  cout<<"Podaj imie"<<endl;
  cin>>student[a].imie,20;
  cout<<"Podaj nazwisko"<<endl;
  cin>>student[a].nazwisko,20;
}
0

Ale głupie przeoczenie. Wielkie dzięki.

0

Generalnie mam jeszcze problem z dodawaniem osób do tej listy. Próbuję to zrobić na zasadzie, że jeżeli moja lista ma n elementów, to próbuję dodać n+1 element, ale zupełnie nie wiem jak to napisać. Z tego co próbowałem to nic nie chciało działać.

Druga sprawa to szukanie jakiejś osoby z tej listy po imieniu i nazwisku. Bazowo moja struktura będzie miała dużo więcej pól takich jak kod pocztowy, numer domu itp. Chciałbym, aby po wpisaniu imienia i nazwiska wyświetlało mi wszystkie informacje o danej osobie.

Ostatni problem to usuwanie jakiegoś elementu z listy. Również po wprowadzeniu imienia i nazwiska.

Bardzo dziękuję za wszelką pomoc i wskazówki jak do zrobić.

0

To moze czas zainteresować się czymś takim jak klasy? ;)
Proponuję zrobić klasę Lista i klasę Węzeł jako pewną abstrakcję oderwaną od tego co te klasy przechowują. I dla tych klas napisać odpowiednie metody do zarządzania nimi.

0 użytkowników online, w tym zalogowanych: 0, gości: 0