#include <iostream>
#include <ctime>
#include "testy.h"
#include "powtorka.h"
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std;
#define CHAR100 (char*)malloc(100)
const int maxIloscOsob=100;
const char* nazwaPliku = "C:/dane.txt";
Osoba osoby[maxIloscOsob];
int iloscOsob = 0;
int dajIloscOsob() { return iloscOsob; }
Osoba* dajOsobe( int i ) { return &osoby[i]; }
char* dzis() {
time_t current = time(0);
char* c = (char*)malloc(6);
strftime( c, 6, "%y%m%d", localtime(¤t) );
return c;
}
bool wczytajLiczbe( const char* pytanie, int &liczba ) {
// zadaniem funkcji jest wczytanie liczby calkowitej do zmiennej referencyjnej liczba.
// jesli wczytanie z klawiatury nie powiedzie sie (np. poniewaz uzytkownik nie wpisze poprawnej
// liczby) zwracana jest wartosc false, w przeciwnym wypadku true
// parametr pytanie to lancuch znakow do wyswietlenia jako zacheta, np. "Ile masz lat?"
// Opis wczytywania z obsluga bledow znajduje sie w instrukcji do cwiczenia 5
/* NALEZY WPISAC KOD */
cout<<pytanie;
if (scanf("%i", &liczba)==1) return true;
//cout<<liczba;
if (((int) liczba>(int)'0')&&((int)liczba<(int)'6'))
return true ;
}
int menu() {
cout<<"1. Wczytaj liste z pliku"<<"\n2. Pokaz liste"<<"\n3. Wyczysc liste"<<"\n4. Dodaj osobe"<<"\n5. Zapisz liste"<<endl;
// funkcja powinna wyswietlic menu o takich pozycjach:
// 1. Wczytaj liste z pliku, 2. Pokaz liste, 3. Wyczysc liste, 4. Dodaj osobe, 5. Zapisz liste, 0. Koniec
// korzystajac z funkcji wczytajLiczbe() nalezy poznac wybor uzytkownika
// zwrocic wpisana wartosc z zakresu 0..5 lub powtorzyc wczytywanie
/* NALEZY WPISAC KOD */
//case
int dana;
bool spr=false;
do{
cin>>dana;
dana=wczytajLiczbe( *pytanie,dana );
}
while(dana==true);
return 0;
}
bool poprawnyPesel( const char* pesel ) {
// funkcja sprawdza, czy podany pesel jest poprawny
// uproszczone zalozenia:
// - pesel ma 11 znakow
// - ostatnia cyfra jest cyfra kontrolna (szczegoly w instrukcji)
/* NALEZY WPISAC KOD */
return true; // te linie usunac
/* TU NALEZY WPISAC KOD */
}
bool dodajOsobe( const char* imie, const char* pesel ) {
// funkcja zapisuje przekazane dane do kolejnej struktury w tablicy osoby (osoby[iloscOsob])
// nastepnie zwieksza wartosc zmiennej iloscOsob
// przed zapisaniem sprawdzana jest poprawnosc peselu
// aby przepisac lancuch znakow ze zmiennej const char* a do char* b nalezy:
// - przydzielic pamiec dla zmiennej b, np. b = CHAR100;
// - skorzystac z funkcji strcpy, np. strcpy(b,a);
// wartosc zwracana przez funkcjie dodajOsobe() to true jesli osobe dodano (pesel poprawny), false w przeciwnym przypadku
/* NALEZY WPISAC KOD */
return true; // te linie usunac
/* TU NALEZY WPISAC KOD */
}
void wczytajDaneOsobyIDodaj() {
// nalezy zadeklarowac i przydzielic pamiec dla zmiennych imie, pesel
// zapytac uzytkownika o odpowiednie dane i wczytac do zmiennych
// skorzystac z funkcji dodajOsobe()
// jesli zwrocila false, to zwolnic pamiec przydzielona dla zmiennych
// i wyswietlic komunikat "Nie dodano osoby!"
/* NALEZY WPISAC KOD */
/* TU NALEZY WPISAC KOD */
}
void pokazDaneOsoby( Osoba* o ) {
// nalezy wyswietlic dane osoby w formacie: imie[tabulator]pesel[koniec linii]
/* NALEZY WPISAC KOD */
/* TU NALEZY WPISAC KOD */
}
int wiekOsoby( const char* pesel ) {
// nalezy obliczyc wiek osoby w latach i wpisac do zmiennej wiek
// aktualna data znajduje sie w zmiennej dzisiaj w formacie RRMMDD
// nalezy pamietac, ze np. dla roku 2012, dzisiaj[0] to znak '1' (nie liczba 1)
char* dzisiaj = dzis();
int wiek;
/* NALEZY WPISAC KOD */
/* TU NALEZY WPISAC KOD */
free(dzisiaj);
return wiek;
}
Osoba* najmlodszaOsoba() {
// funkcja przeszukuje liste osoby[]
// i zwraca wskaznik do najmlodszej z nich (umieszczony w zmiennej r)
// jesli lista jest pusta zwracana jest wartosc NULL
Osoba* r;
/* NALEZY WPISAC KOD */
/* TU NALEZY WPISAC KOD */
return r;
}
void pokazListeOsob() {
// funkcja wyswietla dane wszystkich osob z listy
// nastepnie korzystajac z funkcji najmlodszaOsoba() znajduje osobe o najnizszym wieku
// i wyswietla jej dane oraz wiek, np.
// Najmlodsza osoba: Ala 12212020200
// ma 0 lat.
/* NALEZY WPISAC KOD */
/* TU NALEZY WPISAC KOD */
}
void wczytajZPliku() {
// funkcja otwiera do odczytu plik "nazwaPliku"
// nalezy zadeklarowac i przydzielic pamiec dla zmiennych imie, pesel
// korzystajac z funkcji fscanf() wczytac dane wszystkich osob
// wczytywanie konczy sie gdy funkcja fscanf() zwroci EOF
// osobe dodac do listy korzystajac z funkcji dodajOsobe()
// zwolnic pamiec dla zmiennyc imie i pesel
// plik zamknac
/* NALEZY WPISAC KOD */
/* TU NALEZY WPISAC KOD */
}
void zapiszDoPliku() {
// otworzyc do zapisu plik "nazwaPliku"
// wpisac do niego dane wszystkich osob w formacie: imie[tabulator]pesel[nowa linia]
// plik zamknac
/* NALEZY WPISAC KOD */
/* TU NALEZY WPISAC KOD */
}
int main() {
for (int i=3;i<=11;i++) if (!test(i)) break;
return 0;
int wybor = 0;
while ((wybor=menu()) != 0) {
switch (wybor) {
case 1:
iloscOsob=0;
wczytajZPliku();
break;
case 2:
pokazListeOsob();
break;
case 3:
iloscOsob=0;
break;
case 4:
wczytajDaneOsobyIDodaj();
break;
case 5:
zapiszDoPliku();
break;
}
}
}
ogólnei to mam problem tutaj z int menu ...