Documente Academic
Documente Profesional
Documente Cultură
Sarcina problemei
1. De alcătuit un articol N înscrieri, care conţine informaţia despre numerele de
telefoane a unui grup de persoane(câmpurile: numele de familie a persoanei, nr. de
telefon).
a)De realizat cautarea unei persoane dupa nr de telefon
b)De aranjat inscrierile in ordine decrescatoare dupa nr de telefon
2. Schema bloc: Aa
START i=0;i<n;
i++
clrscr()
\nCulegere numele
de familie
Culege numarul
benefeciarilor X[i].n
ume
n \nCulege numarul
de telefon
A
x[i].tel
a
1 B
a
n\n\t ********
\n\n\t ********
Rezultatul cautarii
Baza initiala este aux
********\n\n
t---------------\n
\
t---------------------------
x[i].dat=aux
-----------------\
\t| Nume |
\t| Nume |
telefon |\n
Telefon ||\
\t---------------\n
\
t---------------------------
-----------------\n 1
ak=0
i=0;i<n,i+
+;
i=0;i<n;
,
x[i].nume,x[i].tel,x[i]. i++
Strcmp (x[i].nume
\ k++
t---------------------------
-----------------\n
\
t---------------------------
-----------------\n
C
k==0
art=x[i]
n\1 Nu exista
angajat cu asa nr \1\n
x[i]=x[z]
\nDoriti sa repetati
cautarea? (y/n)
x[z]=art
(r=='y')||(r=='Y'
clrscr()
\
t---------------------------
-----------------\n
i=0;i<n; C
\t| Numele |
i++ |\n
x[i].nume,x[i].tel,x
\nPentru max=(int)x[i [i].
\
continuare culegeti
].tel t---------------------------
orice tasta...\
-----------------\n"
getch() z=i
3
clrscr() d=i;d<n;d
++
\nCautarea nrmax<x[d].dat
de
telefon 4
max=(int)x[d
caut
B].tel
z=d
3
7. i=0;i<n;
3.Textul programului:
8. <stdio.h>
# include i++
# include <conio.h>
4. x[i].nume,x[i].tel
# include <string.h>
5. ,x[i].dat
struct beneficiar{
char nume[30];
6. t--------------------
char tel[20];
---------------------
};
void main (void) { clrscr();
struct beneficiar x[50],art;
int 3.
k,n,z,i,d; float aux,max; char caut[30], r;
\n\nPentru iesire
puts("Culege numarul de angajati:");
culegeti orice
scanf("%d",&n);
2. getch()
for (i=0;i<n;i++){
printf("\nCulege numele de familie a beneficiarului %d:",i);
scanf("%s",x[i].nume);
1. STOP
printf("\nCulege numarul de telefon a beneficiarului %d:",i);
scanf("%s",x[i].tel); }
printf("\n\n\t ******** Baza initiala este ********\n\n");
printf("\t--------------------------------------------\n");
printf("\t| Numele | Telefonul | \n");
printf("\t--------------------------------------------\n");
printf("\n\n\t ******** Rezultatul cautarii ********\n\n");
printf("\t--------------------------------------------\n");
for (i=0;i<n;i++){
printf("\t|%16s|%14s|\n",x[i].nume,x[i].tel); }
printf("\t--------------------------------------------\n");
printf("\nPentru continuare culegeti orice tasta...\n");
getch();
rl:clrscr();
printf("\nCautare beneficiarului dupa nr. de telefon. \nCulegeti nr. cautat:");
scanf("%s",caut);
printf("\n\n\t ******** Rezultatul cautarii ********\n\n");
printf("\t--------------------------------------------\n");
printf("\t| Numele | Telefonul | Datoria |\n");
printf("\t--------------------------------------------\n");
k=0;
for (i=0;i<n;i++){
if (strcmp(x[i].tel,caut)==0) {k++;
printf("\t|%16s|%14s|\n",x[i].nume,x[i].tel);
printf("\t--------------------------------------------\n");}}
if (k==0) printf("\n\1 Nu exista angajat cu asa numar\1\n");
printf("\nDoriti sa repetati cautarea? (y/n)");
r=getch(); if ((r=='y')||(r=='Y')) goto rl;
for (i=0;i<n;i++){
max=(int) x[i].tel; z=i;
for (d=i;d<n;d++){
if ( max<(int) x[d].tel) { max=(int)x[d].tel; z=d;}}
art=x[i]; x[i]=x[z]; x[z]=art;}
clrscr();
printf("\n\n\t ******** Baza aranjata este ********\n\n");
printf("\t--------------------------------------------\n");
printf("\t| Numele | Telefonul | \n");
printf("\t--------------------------------------------\n");
for (i=0;i<n;i++){
printf("\t|%16s|%14s|\n",x[i].nume,x[i].tel);
printf("\t--------------------------------------------\n");}
printf("\n\nPentru iesire culegeti orice tasta...");
getch();}
5.Rezultatele finale: