Post on 12-Mar-2018
Pc66.c
/*Aplicatie pentru tipuri definite de utilizator - enumerare*/
#include <stdio.h>#include <stdlib.h>
typedef enum {manevra,ianuarie,februarie,martie,aprilie,mai,iunie, iulie,august,septembrie,octombrie,noiembrie,decembrie} lunile;
int an;int nr_zi,lu,zi;char ch;
lunile luna,lunaprec;
int main() { system("cls"); printf("Determinarea numarului zilei in an pentru o data calendaristica:\n"); do { printf("Introduceti data:ziua(1-31),luna(1-12),an(intreg): "); scanf("%d%d%d",&zi,&lu,&an); printf("Data: %d ",zi); switch(lu) { case 1: lunaprec=manevra;
printf("ianuarie ");break; case 2: lunaprec=ianuarie;
printf("februarie ");break; case 3: lunaprec=februarie;
printf("martie ");break; case 4: lunaprec=martie;
printf("aprilie ");break; case 5: lunaprec=aprilie;
printf("mai ");break; case 6: lunaprec=mai;
printf("iunie ");break; case 7: lunaprec=iunie;
printf("iulie ");break; case 8: lunaprec=iulie;
printf("august ");break; case 9: lunaprec=august;
printf("septembrie ");break; case 10:lunaprec=septembrie;
printf("octombrie ");break; case 11:lunaprec=octombrie;
printf("noiembrie ");break; case 12:lunaprec=noiembrie;
printf("decembrie ");break; } printf("%d ",an); nr_zi=zi; for(luna=ianuarie;luna<=lunaprec;luna++) switch(luna) { case ianuarie:case martie:case mai:case iulie:case august:case octombrie: nr_zi=nr_zi+31;break; case aprilie:case iunie:case septembrie:case noiembrie:nr_zi=nr_zi+30;break; case februarie:if (an%4==0) nr_zi=nr_zi+29;
else nr_zi=nr_zi+28; } printf("este a %d -a zi din an.\n",nr_zi); printf("Continuati? (d/n)"); scanf("%1s",&ch); } while (ch!='n'); return 0;}
/* faceti verficarile in asa fel incit sa nupoata fi depasite limitele pentru zi, luna, an)si daca e vorba de prima zi din an sa scrie corect,nu a 1-a zi...*/
pc66a.c
/*Aplicatie pentru tipuri definite de utilizator - enumerare cu variatiuni*/
#include <stdio.h>#include <stdlib.h>
typedef enum {manevra,ianuarie,februarie,martie,aprilie,mai,iunie, iulie,august,septembrie,octombrie,noiembrie,decembrie} lunile;
int an;int nr_zi,lu,zi;lunile luna,lunaprec, lunaex;char ch;
int main() { system("cls"); printf("Determinarea numarului zilei in an pentru o data calendaristica:\n"); do { printf("Introduceti data:ziua(1-31),luna(1-12),an(intreg): "); scanf("%d%d%d",&zi,&lu,&an); printf("Data: %d ",zi); switch(lu) { case 1: lunaprec=manevra;
printf("ianuarie ");break; case 2: lunaprec=ianuarie;
printf("februarie ");break; case 3: lunaprec=februarie;
printf("martie ");break; case 4: lunaprec=martie;
printf("aprilie ");break; case 5: lunaprec=aprilie;
printf("mai ");break; case 6: lunaprec=mai;
printf("iunie ");break; case 7: lunaprec=iunie;
printf("iulie ");break; case 8: lunaprec=iulie;
printf("august ");break; case 9: lunaprec=august;
printf("septembrie ");break;
case 10:lunaprec=septembrie; printf("octombrie ");break;
case 11:lunaprec=octombrie; printf("noiembrie ");break;
case 12:lunaprec=noiembrie; printf("decembrie ");break;
}
/*variatii*/ putchar('\n'); /*lunaex=martie+mai; operatii aritmetice cu variabile de tip enumerare */ scanf("%d",&lunaex); /*citire scriere variabila enumerare*/ printf("%d\n",lunaex);
printf("%d ",an); nr_zi=zi; for(luna=ianuarie;luna<=lunaprec;luna++) switch(luna) { case ianuarie:case martie:case mai:case iulie:case august:case octombrie: nr_zi=nr_zi+31;break; case aprilie:case iunie:case septembrie:case noiembrie:nr_zi=nr_zi+30;break; case februarie:if (an%4==0) nr_zi=nr_zi+29; else nr_zi=nr_zi+28; } printf("este a %d -a zi din an.\n",nr_zi); printf("Continuati? (d/n)"); scanf("%1s",&ch); } while (ch!='n'); return 0;}
Pc67.c
/* Citirea si scrierea elementelor unui vector*/#include <stdio.h>#include <stdlib.h>
int main() { float v[100]; int n,i;
system("cls"); printf("Precizati numarul elementelor vectorului: "); scanf("%d",&n); for(i=0;i<n;i++){ printf("v[%d]=",i); scanf("%f",&v[i]); } printf("Elementele vectorului sunt:\n"); for(i=0;i<n;i++) printf("%.2f ",v[i]); getch(); return 0;}
/* scrieti programul gasind o varianta care sa nu necesiteprecizarea numarului elementelor vectorului*/
pc68.c
#include <stdio.h>#include <stdlib.h>
#define NMAX 50
int main() { int m,n,i,j; float mat[NMAX][NMAX];
system("cls"); printf("Introduceti numarul de linii ale matricei: "); scanf("%d",&m); printf("Introduceti numarul de coloane ale matricei: "); scanf("%d",&n);
printf("Introduceti valorile elementelor matricei:\n"); for(i=0;i<m;i++) for(j=0;j<n;j++) {
printf("mat[%d,%d] = ",i,j);scanf("%f",&mat[i][j]);
} putchar('\n'); for(i=0;i<m;i++) { for(j=0;j<n;j++) printf("%.2f ",mat[i][j]); putchar('\n'); }
/* elementele de pe si de sub diagonala principala*/ printf("\n\n"); printf("Elementele de pe si de sub diagonala principala\n"); for(i=0;i<m;i++) for(j=0;j<=i;j++) printf("%.2f ",mat[i][j]); getch();
/* elementele de pe diagonala secundara*/
printf("\n\n"); printf("Elementele de pe diagonala secundara\n"); for(i=0;i<m;i++) printf("%.2f ",mat[i][n-1-i]);
/* elementele de deasupra diagonalei secundare*/
printf("\n\n"); printf("Elementele de deasupra diagonalei secundare\n"); for(i=0;i<m-1;i++) for(j=0;j<m-i-1;j++)
printf("%.2f ",mat[i][j]); getch(); return 0;}
/* completati programul cu verificarile potrivite: pentru dimensiunile matricelor, daca e vorba de matrici patrate pentru actiunile legate de diagonale*/
pc69.c
#include <stdio.h>#include <stdlib.h>
int Citeste_vector(int *v[],char car) { int i,n;
for (i=0;i<10;i++) v[i]=0; printf("Numarul de elemente ale vectorului %c: ", car); scanf("%d",&n); for (i=0;i<n;i++) { printf("Elementul %c [%d] este: ",car,i); scanf("%d",&v[i]); } return n;}
void Afiseaza_vector(int x[],int nr,char car) { int i;
printf("Sirul %c are urmatoarele elemente: ",car); for (i=0;i<nr;i++) printf("%d ",x[i]); printf("\n");}
int Gasit(int *x[],int nr,int elem) { int i=0;
while (x[i]!=elem && i<nr) i++; return x[i]==elem;}
int main() { int a[10],b[10]; int na,nb,indice; char c[2];
system("cls"); do { na=Citeste_vector(&a,'a'); nb=Citeste_vector(&b,'b'); Afiseaza_vector(a,na,'a'); Afiseaza_vector(b,nb,'b');
indice=0; while((!Gasit(&b,nb,a[indice])) && indice<na) indice++; if (indice<na) printf("Sirurile au cel putin un element comun\n"); else printf("Sirurile nu au nici un element comun\n"); printf("Reluati? (d/n): "); scanf("%1s", c); } while(c[0]!='n'); return 0;}
/* Completati programul cu afisarea elementelor comune celor doua siruri */
Pc69a.c
#include <stdio.h>#include <stdlib.h>
int Citeste_vector(int *v,char car) { int i,n;
for (i=0;i<10;i++) v[i]=0; printf("Numarul de elemente ale vectorului %c: ", car); scanf("%d",&n); for (i=0;i<n;i++) { printf("Elementul %c [%d] este: ",car,i); scanf("%d",&v[i]); } return n;}
void Afiseaza_vector(int *x,int nr,char car) { int i;
printf("Sirul %c are urmatoarele elemente: ",car); for (i=0;i<nr;i++) printf("%d ",x[i]); printf("\n");}
int Gasit(int *x,int nr,int elem) { int i=0;
while (x[i]!=elem && i<nr) i++; return x[i]==elem;}
int main() { int a[10],b[10]; int na,nb,indice; char c[2];
system("cls"); do { na=Citeste_vector(a,'a'); nb=Citeste_vector(b,'b'); Afiseaza_vector(a,na,'a'); Afiseaza_vector(b,nb,'b'); indice=0; while((!Gasit(b,nb,a[indice])) && indice<na) indice++; if (indice<na) printf("Sirurile au cel putin un element comun\n"); else printf("Sirurile nu au nici un element comun\n"); printf("Reluati? (d/n): "); scanf("%1s", c); } while(c[0]!='n'); return 0;}
Pc70.c
/*Bubble sort */
#include <stdio.h>#include <stdlib.h>
Cit_sir(int m,int *sir_x) { int i;
for(i=0;i<m;i++) { printf("Sir [%d] = ",i); scanf("%d",&sir_x[i]); }}
Sortare(int m,int *sir_x) { int i,ordonat=0,aux;
while(!ordonat) { ordonat=1; for(i=0;i<=m-2;i++) if (sir_x[i]>sir_x[i+1]) {
aux=sir_x[i]; sir_x[i]=sir_x[i+1]; sir_x[i+1]=aux; ordonat=0;
} }}
int main() { typedef int tab_val[50];
tab_val sir; int n,i;
system("cls"); printf("Introduceti numarul elementelor sirului care trebuie sortat: "); scanf("%d",&n); Cit_sir(n,&sir); Sortare(n,&sir); printf("Numerele ordonate crescator sunt: "); for (i=0;i<n;i++) printf("%d ",sir[i]); getch(); return 0;}
/* scrieti programul fara a indica numarul elementelor din sir;indicati ce elemente care nu apartin standardului ANSI Csunt prezente in acest program */