witam,
Mialem napisac program w c++ w ktorym mozna wpisywac dane osob (imie, nazwisko, wiek), sortowac te osoby wedlug wieku zapisywac i odczytywac te dane za pomoca fwrite i fread. No i tu wlasnie pojawil sie problem, bo zapis fwritem dziala, a odczyt nie. Prosze o pomoc :) i napisanie w czym problem i co nalezy zmienic, zeby to jakos dzialalo.
Ponizej kod programu w C++ pisalem go pod windowsem, w kompilatorze CODE BLOCKS :)
#include <windows.h>
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
struct osoby
{
char imie[20];
char nazwisko[20];
char wiek[3];
};
osoby dane[100];
int main()
{
int wybor=0 ;
int ile =0 ;
while (wybor!=7)
{
system("cls");
cout<<"UWAGA !! PROGRAM OBSLUGUJE BAZE DANYCH O MAX 100 OSOBACH"<<endl<<endl;
cout<<"Menu:"<<endl<<endl;
cout<<"1. Dodaj osobe"<<endl;
cout<<"2. Wypisz osoby"<<endl;
cout<<"3. Posortuj osoby od najmlodszej do najstarszej"<<endl;
cout<<"4. Usun osobe"<<endl;
cout<<"5. Zapisz "<<endl;
cout<<"6. Wczytaj dane z pliku"<<endl;
cout<<"7. Wyjdz"<<endl<<endl;
cout<<"Wybor: ";
cin>>wybor;
switch (wybor)
{
case 1:
if(ile<100)
{
system("cls");
cout << "Wprowadzanie danych "<< endl;
cout << "Podaj imie: " << endl;
cin >> dane[ile].imie;
cout << "Podaj nazwisko: " << endl;
cin >> dane[ile].nazwisko;
cout << "Podaj wiek: " << endl;
cin >> dane[ile].wiek;
ile++;
}
else cout<<" BRAK MIEJSCA !!!!"<<endl;
break;
case 2:
system("cls");
cout << "Wprowadzone osoby:" << endl;
cout << " " << endl;
for(int i =0; i<ile;i++)
{
cout << dane[i].imie<<" "<<dane[i].nazwisko<< " " << dane[i].wiek << " lat."<< endl;
}
getch();
break;
case 3:
system("cls");
cout << "Osoby od najmlodszej do najstarszej:" << endl;
cout << " " << endl;
osoby temp;
for(int i = 0;i<ile;i++)
{
for(int j= 0; j<ile-1;j++)
{
if(dane[j].wiek>dane[j+1].wiek)
{
temp=dane[j+1];
dane[j+1]=dane[j];
dane[j]=temp;
}
}
}
for(int i =0; i<ile;i++)
{
cout <<i+1<<". "<< dane[i].imie<<" "<<dane[i].nazwisko<< " " << dane[i].wiek << " lat"<< endl;
}
getch();
break;
case 4:
system("cls");
cout<<"Wszystkie pozycje w bazie : "<<endl;
for(int i =0; i<ile;i++)
{
cout <<i+1<<". "<< dane[i].imie<<" "<<dane[i].nazwisko<< " " << dane[i].wiek << " lat"<< endl;
}
int pozycja;
cout<<"Ktory wpis chcesz usunac (0 = nie usuwam): ";
cin>>pozycja;
if(pozycja !=0)
{
for(int i = pozycja-1;i<ile;i++)
{
dane[i]=dane[i+1];
}
ile--;
}
break;
case 5:
system("cls");
FILE *zapis;
zapis=fopen("baza_danych.dat","wb");
fwrite(dane,sizeof(struct osoby),ile,zapis);
fclose(zapis);
cout<<"Zapisano do pliku";
getch();
break;
case 6:
system("cls");
FILE *wczyt;
wczyt=fopen("baza_danych.dat","rb");
fread(dane,sizeof(struct osoby),ile,wczyt);
fclose(wczyt);
cout<<"Wczytano dane z pliku";
getch();
break;
}
}
return 0;
}