Cześć programuje od niedawna i mam problem , a mianowicie , dodaje mi wszystko ładnie zero błędu , wydaje mi się że w linijce 38 jest błąd ,ale inaczej mi to nie działa .
Kiedy chce wyświetlić zawartość tablicy , program wie na której pozycji w tablicy jest element niepusty , ale jest on tak jakby ukryty , po prostu jakby go nie było i nie wiem co z tym zrobić :< , jakby ktoś mógłby pomóc byłbym wdzięczny .
#include <cstdlib>
#include <iostream>
#include <string>
#include <float.h>
using namespace std;
struct student;
struct przedmioty;
int n;
void pamiec(student **&a,przedmioty **&b,int);
void sprawdzanie(studenta,przedmiotyb,int n);
void dodaj(studenta,przedmiotyb);
void kasuj(studenta);
void wyswietl(studenta,przedmiotyb,int );
float srednia(przedmiotyb,int );
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~FUNKCJA GLOWNA~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
int main()
{
printf ("Podaj ilosc studentow : ");
cin >> n;
student**a;
przedmioty**b;
pamiec(a,b,n);
system("cls");
sprawdzanie(*a,*b,n); //TU JEST COS Z TYMI GWIAZDKAMI ALE INACZEJ NIE DZIALA
system("PAUSE");
}
///~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~STRUKTURY~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//~~~~~~~~~~~~~~~~~~~~~DANE~~~~~~~~~~~~~
struct student
{
string imie;
string nazwisko;
float srednia_ocen;
int wiek;
};
//~~~~~~~~~~~~~~~~~~~~~PRZEDMIOTY~~~~~~~~~~~~~
struct przedmioty
{
float matematyka;
float biologia;
float polski;
float angielski;
float informatyka;
};
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~FUNKCJE~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void pamiec(student **&a,przedmioty &b,int n)
{
a=new student[n];
b=new przedmioty[n];
for (int i=0;i<n;i++)
{
a[i] = new student[n];
b[i] = new przedmioty[n];
};
};
//~~~~~~~~~~~~~~~~~~~~~DODAWANIE~~~~~~~~~~~~~
void dodaj(studenta,przedmiotyb)
{
printf( "\n\nPodaj numer studenta, ktorego dane chcesz edytowac : ");
int numer;
cin >> numer;
system("cls");
printf ("\n\nPodaj kolejno : imie, nazwisko, wiek\n");
cin >> a[numer].imie;
cin >> a[numer].nazwisko;
cin >> a[numer].wiek;
a[numer].srednia_ocen = srednia(b,numer);
system("cls");
}
//~~~~~~~~~~~~~~~~~~~~~KASOWANIE~~~~~~~~~~~~~
void kasuj(student*a)
{
printf("\n\nPodaj numer studenta, ktorego dane chcesz skasowac : ");
int numer;
cin >>numer;
a[numer].imie ="";
a[numer].nazwisko = " ";
a[numer].srednia_ocen = 0;
a[numer].wiek = 0;
}
//~~~~~~~~~~~~~~~~~~~~~WYSWIETLANIE~~~~~~~~~~~~~
void wyswietl(studenta,przedmiotyb ,int n)
{
printf("\n\nWyswietlanie zawartosci tablicy dynamicznej:\n");
printf("\n\nIlosc struktur %d:\n");
for (int i = 0; i < n; i++)
{
if (a[i].imie != "") {
printf("\n%d",i);
printf("\nImie :" ,a[i].imie);
printf("\nNazwisko :" , a[i].nazwisko);
printf("\nSrednia ocen :" , a[i].srednia_ocen);
printf("\nwiek :" , a[i].wiek);
printf("\n");
}
}
}
//~~~~~~~~~~~~~~~~~~~~~SREDNIA~~~~~~~~~~~~~
float srednia(przedmioty*b,int numer)
{
float sred;
cout<< "Podaj ocene z :\n";
cout<< "matematyka\n";
cin >> b[numer].matematyka;
cout<< "biologii\n";
cin >> b[numer].biologia;
cout<< "polski\n";
cin >> b[numer].polski;
cout<< "angielski\n";
cin >> b[numer].angielski;
cout<< "informatyka\n";
cin >> b[numer].informatyka;
sred = (((b[numer].matematyka) + (b[numer].biologia) + (b[numer].polski) + (b[numer].angielski) + (b[numer].informatyka))/5);
return sred;
}
//~~~~~~~~~~~~~~~~~~~~~SPRAWDZANIE~~~~~~~~~~~~~
void sprawdzanie(student *a,przedmioty *b,int ) // TUTAJ CHCIALEM PRZEKAZAC NIBY DOBRZE ALE I TAK c****
{
string dzialanie = "koniec";
do
{
printf("\n\nPodaj, co chcesz zrobic \ndodaj\nkasuj\nwyswietl\nkoniec\n ");
cin >>dzialanie;
if (dzialanie != "koniec" && dzialanie != "dodaj" && dzialanie != "kasuj" && dzialanie != "wyswietl")
dzialanie = "koniec";
if (dzialanie == "dodaj")
{
system("cls");
dodaj(a,b);
}
if (dzialanie == "kasuj")
{
system("cls");
kasuj(a);
}
if (dzialanie == "wyswietl")
{
system("cls");
wyswietl(a,b,n);
}
}while (dzialanie != "koniec");
};