1.Să se realizeze un program care copiază conţinutul unui fişier de pe disc într-altul al cărui nume este
specificat în program.
1.1 Codul Sursa
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
char sir[256];
FILE *citire, *scriere;
citire = fopen("d:\\tema1.txt", "r");
scriere = fopen("e:/tema1.txt", "w");
if(citire == NULL)
{
printf ("Nu se poate deschide fisierul de citire.\n");
getch();
exit(1);
}
fgets(sir,sizeof(sir),citire); /* citeste un sir pana se ajunge la lungimea
de caractere specificata din fisierul de citire */
fputs(sir,scriere); /*scrie sirul de caractere in fisierul de scriere*/
printf("Textul copiat este: %s", sir);
fclose(citire);
fclose(scriere);
getchar();
}
1.2 Rularea aplicatiei
2.Sa se realizeze un program care citeşte de la tastatură un text de mai multe linii şi îl scrie într-un
fişier text.
2.1 Codul sursa
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
FILE *pf; //am declarat variabila pointer de fisier
char c,*nume;
printf("Denumirea fisierului de lucru: ");
nume=(char*)malloc(20*sizeof(char));
gets(nume);
if ((pf=fopen("d:\\e2.txt", "w"))==NULL)
{
printf("Nu se poate deschide fisierul.\n");
getch();
exit(1);
}
puts("Scrieti un text. Cu caracterul '$' se incheie:");
do {
c=getchar();
putc(c,pf);
} while (c !='$');
getchar();
fclose(pf);
3.Sa se realizeze un program care citeşte de la tastatură câteva înregistrări de tip informaţii
informaţii despre apartamente - nrApart, nrCamere, strada etc şi le scrie într-un fişier.
pf=fopen(nume_fis,"r+");
fseek(pf,0l,SEEK_END);
printf("Introduceti sirurile de caractere terminate cu ENTER. Pentru a termina\
apasati CTRL+Z si ENTER\n");
while(fgets(s,100,stdin)!=(char*)0)
{
fputs(s,pf);
}
fclose(pf);
int main()
{
long a, b, c;
// deschide fisierul pentru citire si dupa pentru adaugare:
fstream f("numere3.txt", ios::in | ios::app);
// se testeaza daca fisierul poate fi deschis:
if (!f)
{
// afiseaza un mesaj:
cout << "Eroare la deschiderea fisierului.\n";
// se paraseste programul:
return 0;
}
// citeste numerele din fisier:
f >> a >> b >> c;
f << endl;
// calculeza si adauga media in fisier:
f << "Media aritmetica este: " << (float)(a + b + c) / 3;
// inchide fisierul:
f.close();
// se termina programul:
cout << "Gata! Vizualizati fisierul 'numere3.txt'!\n";
}
6.Se presupune un fişier text ("vocale.txt") ce conţine o inşiruire de caractere. Să se contorizeze apariţia fiecărei vocale
în fişier
6.1 Codul sursa
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<limits.h>
void main()
{
char c;
int a=0,e=0,i=0,o=0,u=0; //a=nr. de aparitii a vocalei "a"
FILE *stream;
stream = fopen("D:\\vocale.txt ", "r");
if(stream == NULL)
{
printf ("Eroare");
getch();
exit(1);
}
while(!feof(stream))
{
fscanf(stream,"%c",&c);
switch(c)
{
case 'a': a++; break;
case 'e': e++; break;
case 'i': i++; break;
case 'o': o++; break;
case 'u': u++;
};
}
fclose(stream);
printf("Vocala \"a\" aparare de %d ori.\n",a);
printf("Vocala \"e\" aparare de %d ori.\n",e);
printf("Vocala \"i\" aparare de %d ori.\n",i);
printf("Vocala \"o\" aparare de %d ori.\n",o);
printf("Vocala \"u\" aparare de %d ori.\n",u);
getchar();
}
6.2 Rularea aplicatiei
7.Sa se scrie un program care face calcule si le afiseaza intr-un fisier, folosind functia fprintf
7.1 Codul sursa
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
FILE *pf;
pf = fopen("D:/calcul.txt", "r");
int cant=5;
float pret=2000;
if(pf == NULL)
{
printf ("Eroare");
getch();
exit(1);
}
fprintf(pf, "\tValoare totala:\n"); //afiseaza in fisier
fprintf(pf, "\t\tLei: %14.2f\n",cant*pret); //afiseaza in fisier
printf("\tValoare totala:\n"); //afiseaza pe ecran
printf("\t\tLei: %14.2f\n",cant*pret); //afiseaza pe ecran
fclose(pf);
getchar();
}
int x; /
int maxim=-INT_MAX; //consideram maximul cel mai mic numar intreg
int minim=INT_MAX; //consideram minimul cel mai mare numar intreg
while(!feof(stream))
{
fscanf(stream,"%d",&x); //citeste sirul de nr si le compara cu x
if (x>maxim)
maxim=x;
else
if (x<minim)
minim=x;
}
fclose(stream);
printf("Maximul din fisier este: %d\n",maxim);
printf("Minimul din fisier este: %d\n",minim);
getchar();
}
9.Se citeşte un fişier text ce conţine numere întregi despărţite prin spaţiu sau ENTER. Să se afişeze suma numerelor pare si
suma numerelor impare dintre valorile existente în acel fişier
9.1 Codul Sursa
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
FILE *stream;
stream = fopen("D:\\test.txt", "r");
if(stream == NULL)
{
printf ("Eroare");
getch();
exit(1);
}
int x;
int sumanrImpare=0;
int sumanrPare=0;
while(!feof(stream))
{
fscanf(stream,"%d",&x);
if(x % 2 == 0)
sumanrPare=sumanrPare + x;
if(x % 2 != 0)
sumanrImpare=sumanrImpare + x;
}
fclose(stream);
printf("sumanrImpare este: %d\n",sumanrImpare);
printf("sumanrPare este: %d\n",sumanrPare);
getchar();
}
9.2 Rularea aplicatiei
10.Să se realizeze un program care copiază dintr-un fişier text într-un alt fişier text doar liniile care
conţin un anumit cuvânt, introdus de la tastatură.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int rez;
return 0;
}
10.2 Rularea Aplicatiei
11.Se dau n elevi. Pentru acestia se citesc: numele şi două note la matematica. Să se calculeze media fiecărui elev.
11.1 Codul sursa
#include<iostream.h>
#include<string.h>
struct elev
{char nume[25];
int n1,n2;
float media;
};
elev a[25];
int n;
void citire()
{int i;
for(i=1; i<=n; i++)
{cout<<"numele: "; cin.get();cin.get(a[i].nume,20,'\n');
cout<<"nota1: "; cin>>a[i].n1;
cout<<"nota2: "; cin>>a[i].n2;
a[i].media=(((float)a[i].n1+a[i].n2)/2);
};};
void afisare()
{int i;
for(i=1; i<=n; i++)
cout<<a[i].nume <<" "<<a[i].n1<<" "<<a[i].n2<<" "<<a[i].media<<endl;
};
void ordonare()
{int i,g;
elev aux;
do{ g=1;
for(i=1; i<n; i++)
if((a[i+1].media>a[i].media)||(a[i+1].media==a[i].media && strcmp(a[i+1].nume,a[i].nume)<0))
{aux=a[i+1]; a[i+1]=a[i]; a[i]=aux; g=0; }
} while(!g); #include<iostream.h>
#include<string.h>
struct elev
{char nume[25];
int n1,n2;
float media;
};
elev a[25];
int n;
void citire()
{int i;
for(i=1; i<=n; i++)
{cout<<"numele: "; cin.get();cin.get(a[i].nume,20,'\n');
cout<<"nota1: "; cin>>a[i].n1;
cout<<"nota2: "; cin>>a[i].n2;
a[i].media=(((float)a[i].n1+a[i].n2)/2);
};};
void afisare()
{int i;
for(i=1; i<=n; i++)
cout<<a[i].nume <<" "<<a[i].n1<<" "<<a[i].n2<<" "<<a[i].media<<endl;
};
void ordonare()
{int i,g;
elev aux;
do{ g=1;
for(i=1; i<n; i++)
if((a[i+1].media>a[i].media)||(a[i+1].media==a[i].media && strcmp(a[i+1].nume,a[i].nume)<0))
{aux=a[i+1]; a[i+1]=a[i]; a[i]=aux; g=0; }
} while(!g);
};
void main()
{ cout<<"n=";cin>>n;
citire(); afisare();
ordonare();
cout<<"Elevii in ordinea descrescatoare a mediilor"<<endl;
afisare();
};};
void main()
{ cout<<"n=";cin>>n;
citire(); afisare();
ordonare();
cout<<"Elevii in ordinea descrescatoare a mediilor"<<endl;
afisare();
12. Se citesc de la tastatură două numere complexe. Să se efectueze adunarea, scaderea, înmulţirea şi împărţirea
acestor doua numere complexe.
12.1 Codul Sursa
#include <iostream.h>
#include <conio.h>
struct complex
{float x,y;
};
complex a,b,c;
void afisare(complex e)
{if(e.y>=0)
cout<<e.x<<"+"<<e.y<<"i"<<endl;
else
cout<<e.x<<e.y<<"i"<<endl;
};
void adunare()
{c.x=a.x+b.x;
c.y=a.y+b.y;
};
void scadere()
{c.x=a.x-b.x;
c.y=a.y-b.y;
};
void inmultire()
{c.x=a.x*b.y-a.y*b.x;
c.y=a.x*b.y+a.y*b.x;
};
void impartire()
{c.x=(a.x*b.x+a.y*b.y)/(b.x*b.x+b.y*b.y);
c.y=(a.y*b.x-a.x*b.y)/(b.x*b.x+b.y*b.y);
};
void main()
{cout<<"primul numar:"; cin>>a.x>>a.y;
cout<<"al doilea numar:"; cin>>b.x>>b.y;
cout<<"a="; afisare(a);
cout<<"b="; afisare(b);
adunare();
cout<<"suma=";
afisare(c);
scadere();
cout<<"diferenta=";
afisare(c);
inmultire();
cout<<"produsul=";
afisare(c);
impartire();
cout<<"impartire=";
afisare(c);
};
13. Să se scrie un program care sa administreze un parc de automobile. Informaţiile relative la un automobil sunt:
numărul de locuri, puterea (în cai putere), marca, culoarea, anul fabricaţiei maşinii.
- se vor citi informatiile relative la cele n automobile din parcul de autoturisme. Se vor afisa doar acele automobilele
care au 5 locuri
- sa se scrie o functie care afiseaza toate automobilele fabricate într-un anumit an dat ca parametru.
13.1 Codul sursa
#include<stdio.h>
#include<conio.h>
typedef struct
{
char marca[20];
char model[20];
char cul[20];
int an;
struct
{
char nl;
int put;
}date;
}automobil;
typedef automobil masini[20];
void citire(masini a, int *n)
{
int i;
printf("Dati nr. de automobile: ");
scanf("%d",n);
for(i=0; i<*n; i++)
{
printf("Introduceti datele despre automobilul %d\n",i+1);
printf("\tmarca: ");
scanf("%s",a[i].marca);
printf("\tmodelul: ");
scanf("%s",a[i].model);
printf("\tculoarea: ");
scanf("%s",a[i].cul);
printf("\tanul: ");
scanf("%d",&a[i].an);
printf("\tnumarul de locuri: ");
scanf("%d",&a[i].date.nl);
printf("\tputerea in cai putere: ");
scanf("%d",&a[i].date.put);
}
}
getchar();
int k;
scanf("%d", &k);
}
13.2 Rularea Aplicatiei
14. La o staţie de benzină există mai multe maşini caracterizate prin număr, marcă şi culoare. Să se determine numărul
maşinilor Dacia.
14.1 Codul sursa
#include<iostream.h>
#include<string.h>
#include<conio.h>
typedef struct
{char marca[20],culoare[20],med[20];
int nr;}masina ;
masina a[20];
int n,x,k;
void citire()
{int i;
cout<<"n=";cin>>n;
for (i=1;i<=n;i++)
{cout<<„a[i].marca: „;cin>>a[i].marca;
cout<<„a[i].culoare: „;cin>>a[i].culoare;
cout<<„a[i].numar: „;cin>>a[i].nr;
}
}
void nr_dacia()
{ int i;
int nr=0;
for (i=1;i<=n;i++)
{x=strcmp(a[i].marca,"dacia");
if (x==0) nr=nr+1;}
cout<<"numarul de masini Dacia este "<<nr<<"\n";
}
void sortare()
{ int i,j;masina aux;
for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
{x=strcmp(a[i].culoare,a[j].culoare);
if(x>0)
{aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
for (i=1;i<=n;i++)
cout<<a[i].culoare<<" "<<a[i].marca<<""<<a[i].nr<<endl;
}
void main()
{
citire();
nr_dacia();
sortare();
}
void sortare()
{ int i,j;masina aux;
for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
{x=strcmp(a[i].culoare,a[j].culoare);
if(x>0)
{aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
for (i=1;i<=n;i++)
cout<<a[i].culoare<<” „<<a[i].marca<<” „<<a[i].nr<<endl;
}
void main()
{
citire();
nr_dacia();
sortare();
}
15. Pentru evidenţa produselor cosmetice dintr-un depozit, se defineşte o structură cu următoarele informaţii: codul
produsului, denumire, preţul produsului. Citiţi informaţiile tuturor produselor şi afişaţi produsele cu noile preţuri
(valoarea lui x este 7 dacă codul produsului este mai mic decât 500. Şi 11 în caz contrar). Afişaţi produsele cu cel mai
mare preţ după scumpire.
15.1 Codul sursa
#include<iostream.h>
#include<string.h>
#include<conio.h>
typedef struct
{int cod,c,p,pret;
char den[20];}produse;
produse a[20];
int n,i,c,p;
void citire()
{
cout<<"Dati numarul de produse ";cin>>n;
for (i=1;i<=n;i++)
{cout<<"codul produsului ";cin>>a[i].cod;
cout<<"pretul produsului ";cin>>a[i].pret;
cout<<"denumirea produsului ";cin>>a[i].den;}
}
void rezolvare()
{
for (i=1;i<=n;i++)
if(a[i].cod<500) a[i].pret=7;
else a[i].pret=11;
for (i=1;i<=n;i++)
cout<<"pretul "<<a[i].den<<" este "<<a[i].pret<<"\n";
cout<<endl;
for (i=1;i<=n;i++)
if(a[i].pret==11) cout<<a[i].den<<"\n";
}
void main()
{
citire();
rezolvare();
}