Sunteți pe pagina 1din 4

#include <cstdio>

#include <conio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
struct depou{
char denumire_locomotiva[100];
char producator[150];
char serie[10];
char carburant[10];
int capacitate_motor;
};
int i, k;
int validare_producator(char m[]){
if(strlen(m) >=125){
cout<<"\n Lungimea este mai mare de 125 caractere \n";
return 0;
}
if(toupper(m[0]) != m[0]){
cout<<"\n Primul caracter nu este majuscula \n";
return 0;
}
for(int i = 0; i < strlen(m); i++){
if(!isalpha(m[i]) && m[i] != '-'){
cout<<"\n Cuvintele nu sunt despartite prin - \n";
return 0;
}
}
return 1;
}
int validare_denumire_locomotiva(char m[]){
if(strlen(m) >= 75){
cout<<"\n Lungimea este mai mare de 75 caractere \n";
return 0;
}
for(int i = 0; i < strlen(m); i++){
if(toupper(m[i]) != m[i]){
cout<<"\n Literele trebuie sa fie numai majuscule \n";
return 0;
}
if(!isalpha(m[i]) && m[i] != ' '){
cout<<"\n Cuvintele nu sunt despartite prin spatiu \n";
return 0;
}
}
return 1;
}
int validare_serie(char m[]){
if(strlen(m)==0)

return 1 ;
if(strlen(m) >= 5){
cout<<"\nLungimea este mai mare de 5 caractere \n";
return 0;
}
if(!isalpha(m[0])){
cout<<"\n Primul caracter trebuie sa fie litera \n";
return 0;
}
for(int i = 1; i < strlen(m); i++){
if(!isdigit(m[i])){
cout<<"\n Caracterele de la 2 la n trebuie sa fie cifre
\n";
return 0;
}
}

return 1;
}
int validare_tip_carburant(char m[]){
if(strlen(m)<=8)
return 1;
else{
cout<<"\nLungimea este mai mare de 8 caractere \n";
return 0;
}

}
int validare_capacitate_motor(int a){
if(a < 1 || a > 8000){
cout<<"Numarul trebuie sa fie cuprins intre 1 si 8000 \n";
return 0;
}
}
void creareFisier(){
FILE *f;
char ch3;
depou a;
char ch[10];
f=fopen("depouri.txt", "wt"); fclose(f);
do{
system("cls");
for (i=1; i<=27; i++)
printf(" ");
cprintf(" Fisiere(creare) \n"); printf("\n");

do{
printf("denumire_locomotiva: ");
fflush(stdin) ;
gets(a.denumire_locomotiva);
} while (validare_denumire_locomotiva(a.denumire_locomotiva) ==
0);
do{
printf("producator: ");
fflush(stdin) ;
gets(a.producator);
} while (validare_producator(a.producator) == 0);
do{
printf("serie: ");
fflush(stdin) ;
gets(a.serie);
} while (validare_serie(a.serie) == 0);
do{
printf("tip_carburant:");
fflush(stdin) ;
gets(a.carburant);
} while (validare_tip_carburant(a.carburant) == 0);
do{
printf("capacitate_motor: ");
cin>>a.capacitate_motor;
} while (validare_capacitate_motor(a.capacitate_motor) == 0);
f=fopen("depouri.txt","at");
fprintf(f,"%s %s %s %s %d\n", a.denumire_locomotiva, a.produ
cator, a.serie, a.carburant, a.capacitate_motor);
fclose(f);
printf("mai adaugati?(y/n)");
ch3 = getch();
}while (ch3=='y'||ch3=='Y');
}
void afisareFisier(){
FILE *f;
depou a;
int pas=0;
f=fopen("depouri.txt","rt");
system("cls");
for (i=1; i<=27; i++)printf(" "); cprintf(" Fisiere(afisare) \n"); prin
tf("\n");
printf("---------------------------------------------------------------\
n");
printf("| denumire_locomotiva | producator| serie|
tip_carburant|
capacitate_motor| \n");
printf("---------------------------------------------------------------\
n");

while (!feof(f)){
fscanf(f,"%s %s %s %s %d \n", a.denumire_locomotiva, a.producato
r, a.serie, a.carburant, &a.capacitate_motor);
printf("|%11s|%9s|%10s|%15s| %6d |\n", a.denumire_locomotiva, a.
producator, a.serie, a.carburant, a.capacitate_motor);
pas++;
if (pas%15==0){
printf("\n\nApasati orice tasta pentru a continua ...\n"
);getch();
system("cls");
for (i=1; i<=27; i++)printf(" "); cprintf(" Fisiere(afis
are) \n"); printf("\n");
printf("--------------------------------------------------------------\n");
printf("| denumire_locomotiva | producator| serie|
tip_carburant'| capacitate_motor| \n");
printf("--------------------------------------------------------------\n");
}
}
printf("-----------------------------------------------------------------------\n");
printf("\n\napasati o tasta pt a continua");
fclose(f);
getch();
}
void main()
{
char ch2;
do{
system("cls");
for(i=1; i<=31; i++)printf(" "); cprintf(" Fisiere \n"); print
f("\n");
printf("0: Iesire\n");
printf("1: Creare fisier text\n");
printf("2: Afisare date\n");
ch2=getch();
switch(ch2){
case '1':
creareFisier();
break;
case '2':
afisareFisier();
break;
}
}while (ch2!='0');
}