Tehnici de programare
Alcatuiti un meniu care va calcula: a)numérele mai mari decit 8 sa fie inlocuite cu cifra 1;
b)numérele nenegative ,pare,mai mici decit 12 sa fie inlocuite cu 5
c)produsul numerelor impare negative
#include <stdio.h>
#include "d:\color.h"
main()
{
int i,a[5],n,e;
printf("Introduceti nr de elemente:\t");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\t elem %d: ", i+1);
scanf("%d", &a[i]);
}
printf("\n Alegeti una din optiuni:\n");
printf("1.Sarcina a\n");
printf("2.Sarcina b\n");
printf("3.Sarcina c\n");
scanf("%i",&e);
switch(e)
{
case 1:
{
printf("Elementele sirului sunt: \n");
for(i=0; i<n; i++)
{
SetColor(15);
if(a[i]>1 && a[i]<8)printf("%d \t", a[i]);
else{
if(a[i]>0){SetColor(14);
printf("%d \t", a[i]);}else{SetColor(15); printf("%d \t", a[i]);}}}
printf("\n");
for(i=0; i<n; i++)
{
SetColor(15);
if(a[i]>1 && a[i]<8)printf("%d \t", a[i]);
else{
if(a[i]>0){SetColor(14);
printf("1 \t", a[i]);}else{SetColor(15); printf("%d \t", a[i]);}}
}}break;
case 2:
{
printf("Elementele sirului sunt: \n");
for(i=0; i<n; i++)
{
SetColor(14);
if(a[i]>2 && a[i]<12 && a[i]>0 && a[i]%2==0)printf("%d \t", a[i]);
else{
SetColor(15);
printf("%d \t", a[i]);}}
printf("\n");
for(i=0; i<n; i++)
{
SetColor(14);
if(a[i]>2 && a[i]<12 && a[i]>0 && a[i]%2==0)printf("5 \t", a[i]);
else{
SetColor(15);
printf("%d \t", a[i]);}
}}break;
case 3:
{
int prod=1;
printf("Elementele sirului sunt: \n");
for(i=0; i<n; i++)
{
SetColor(14);
if(a[i]%2!=0 && a[i]<0)printf("%d \t", a[i]);
else{
SetColor(15);
printf("%d \t", a[i]);}}
printf("\n");
for(i=0;i<n;i++)
{
if(a[i]%2!=0 && a[i]<0){prod=prod*a[i];}
}
printf("Produsul este: %d",prod);
}break;
default:printf("Alegeti o optiune din cele indicate!");
}
}
a) b)
c)
Sa se calculeze media aritmética de pe fiecare linie a matricei iar numarul care este mai mic decit
suma indicilor sai sa fie inlocuita cu rezultatul impartirii numarului la ma.
#include <stdio.h>
#include "d:\color.h"
#include <math.h>
main()
{
float a[10][10],ma=0,s;
int i,j,n,m;
printf("Introduceti n=");
scanf("%d",&n);
printf("Introduceti m=");
scanf("%d",&m);
printf("\n");
printf("\n");
for(i=1;i<n;i++)
{
for(j=1;j<m;j++)
{
a[i][j]=10.00/(i+j);
SetColor(15);
printf("%.2f\t",a[i][j]);
}
printf("\n");
printf("\n");
}
SetColor(15);
for(i=1;i<n;i++)
{
s=0.00;
for(j=1;j<m;j++)
{
s=s+a[i][j];
ma=s/(m-1);
if(a[i][j]>(i+j))
{
SetColor(14);
printf("%.2f\t",a[i][j]/ma);
}else{
SetColor(15);
printf("%.2f\t",a[i][j]);}
}
printf("Media aritmetmetica de pe linia este %.2f\n",ma);
}
Sa se afle numérele pare si impare dintr-un vector afisindu-le indicii si valorile acestora.
#include <stdio.h>
#include "color.h"
main()
{
int i,D[10],n,p[10],j=0;
printf("Introduceti nr de elemente:\t\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\t elem %d: ", i);
scanf("%d", &D[i]);
}
printf("Numerele pare sunt:\n");
for(i=0;i<n;i++)
{
SetColor(4);
if(D[i]%2==0)printf("%d\t",D[i]);else
{
SetColor(15);printf("%d\t",D[i]);}
}
printf("\n");
SetColor(15);
printf("Valorile ultimelor elemente pare sunt:\n");
for(i=0;i<n;i++)
{
if(D[i]%2==0){p[j]=D[i];j=j+1;}
}
printf("%d\t%d ",p[j-2],p[j-1]);
printf("\n");
printf("Indicile ultimelor elemente pare sunt:");
printf("\n");
for(i=0;i<n;i++)
{
if(D[i]%2==0)
{
SetColor(4);
printf("%d \t",i);
}
else
{
SetColor(15);
printf("%d \t",i);
}
}
printf("\n");
printf("Numerele impare sunt:\n");
for(i=0;i<n;i++)
{
SetColor(4);
if(D[i]%2!=0)printf("%d\t",D[i]);else {SetColor(15);printf("%d\t",D[i]);}
}
printf("\n");
SetColor(15);
printf("Valorile ultimelor elemente impare sunt:\n");
for(i=0;i<n;i++)
{
if(D[i]%2!=0){p[j]=D[i];j=j+1;}
}
printf("%d\t%d \t%d ",p[j-3],p[j-2],p[j-1]);
printf("\n");
printf("Indicile ultimelor elemente impare sunt:");
printf("\n");
for(i=0;i<n;i++)
{
if(D[i]%2!=0)
{
SetColor(4);
printf("%d\t",i);
}
else
{
SetColor(15);
printf("%d\t",i);
}
}
SetColor(15);
}
Sa se introduca eleméntele unui sir afisind produsul elementelor negative de pe pozitii pare
,eleméntele cu índice impar si suma lor si eleméntele mai mare decit 7.Comparati produsul cu
suma.
#include <stdio.h>
#include "d:\color.h"
main(){
int sorin[8],i,k;
float p=1,s1=0,s2=0,s3=0;
printf("Introduceti nr k:");
scanf("%i",&k);
for(i=1;i<8;i++)
{
printf("%i=",i);
scanf("%i",&sorin[i]);}
printf("Elementele sirului sunt:");
printf("\n");
for(i=1;i<8;i++){printf("%i\t",i);}
printf("\n");
for(i=1;i<8;i++)
{
if(i%2==0 && sorin[i]<0)
{
SetColor(14);
printf("%i\t",sorin[i]);
}
else
{
SetColor(15);
printf("%i\t",sorin[i]);
}
}
for(i=1;i<8;i++)
{
if(i%2==0)
{
if(sorin[i]<0 && sorin[i]%k==0)p=p*sorin[i];
}
}
printf("\n Produsul elementelor neg de pe poz pare este: %f",p);
printf("\n");
printf("\n");
printf("Elementele cu indice impar sunt:");
printf("\n");
for(i=1;i<8;i++){printf("%i\t",i);}
printf("\n");
for(i=1;i<8;i++)
{
if(i%2!=0)
{
s1=s1+sorin[i];
SetColor(4);
printf("%i\t",sorin[i]);
}else
{
SetColor(15);
printf("%i\t",sorin[i]);
}
}
SetColor(15);
printf("\n Suma el cu ind imp este %f",s1);
printf("\n");
printf("\n");
printf("Elementele mai mare ca 7 sunt:");
printf("\n");
SetColor(15);
for(i=1;i<8;i++){printf("%i\t",i);}
printf("\n");
for(i=1;i<8;i++)
{
if(sorin[i]>7)
{
s2=s2+sorin[i];
SetColor(4);
printf("%i\t",sorin[i]);
}else
{
SetColor(15);
printf("%i\t",sorin[i]);
}
}
SetColor(15);
printf("\n Suma el mai mare ca 7 este %f",s2);
s3=s1/s2;
if(p>s3)printf("\n Produsul %f este mai mare decit suma %f",p,s3);else printf("\n Produsul %f nu
este mai mare decit suma %f",p,s3);
}
Sa se afle minimul de pe diagonalele unei matrici si sa fie inlocuite cu cifra
#include <stdio.h>
#include "d:\color.h"
main()
{
int i,j,n,m,c,b,b1,a[10][10],min=99999,min1=99999;
printf("Introduceti n=");
scanf("%d",&n);
printf("Introduceti m=");
scanf("%d",&m);
printf("\n");
printf("\n");
for(i=0;i<n;i++){
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("\n");
printf("\n");
for(i=0;i<n;i++){
for(j=0;j<m;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n");
printf("\n");
}
for(i=0;i<n;i++)
if(a[i][i]<min){min=a[i][i]; c=i;};
printf("Minimul de pe diagonala principala este %d",min);
printf("\n");
for(i=0;i<n;i++){
if(a[i][n-i-1]<min1){min1=a[i][n-i-1];
b=i;b1=n-i-1;};}
printf("Minimul de pe diagonala secundara este %d",min1);
printf("\n");
for(i=0;i<n;i++){
for(j=0;j<m;j++)
{
if(a[i][j]==min || a[i][j]==min1){SetColor(14);
printf("%d\t",a[1][1]);}else{SetColor(15);
printf("%d\t",a[i][j]);}
}
printf("\n");
printf("\n");}
printf("\n");
Sa se creeze un meniu in care sa se afle:a)Elementele pare din (4;18)
b)Numerele care impartite la 7 dau restul 1,2 sau 5
c)Radacinile ecuatiei sint reale 𝑥 2 + 3𝑥 ∗ 𝑎[𝑖] + 5 = 0
a)
b)
c)
#include <stdio.h>
#include <math.h>
#include "d:\color.h"
main()
{
int i,a[5],n,e;
printf("Introduceti nr de elemente:\t");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\t elem %d: ", i+1);
scanf("%d", &a[i]);
}
printf("\n Alegeti una din optiuni:\n");
printf("1.Elementele pare din (4;18)\n");
printf("2.Numerele divizibile la 7\n");
printf("3.Radacinile ecuatiei sint nr reale\n");
scanf("%i",&e);
switch(e)
{
case 1:
{
printf("Elementele pare din (4;18) :\n");
for(i=0;i<n;i++)
{
if(a[i]>4 && a[i]<18 && a[i]%2==0)printf(" %d \t",a[i]);
}
}
printf("\n Elementele sirului sunt: \n");
for(i=0; i<n; i++)
{
if(a[i]>4 && a[i]<18 && a[i]%2==0)
{
SetColor(4);
printf(" %d \t",a[i]);
}
else
{
SetColor(15);
printf(" %d \t",a[i]);
}
}break;
case 2:
{
printf("Elementele divizibile la 7 :\n");
for(i=0;i<n;i++)
{
if(a[i]%7==1 || a[i]%7==2 || a[i]%7==5)printf(" %d \t",a[i]);
}
printf("\nElementele sirului sunt: \n");
for(i=0; i<n; i++)
{
if(a[i]%7==1 || a[i]%7==2 || a[i]%7==5)
{
SetColor(4);
printf(" %d \t",a[i]);
}
else
{
SetColor(15);
printf(" %d \t",a[i]);
}
}break;
case 3:
{
printf("Elementele sirului care satisfac conditia sunt \n");
for(i=0;i<n;i++)
{
if(((pow(3,2)*pow(a[i],2))-(4*5))>=0)
{
SetColor(4);
printf(" %d \t",a[i]);
}
else
{
SetColor(15);
printf(" %d \t",a[i]);
}
}break;
} default:printf("Alegeti o optiune din cele indicate!");
}
}
}
Calculati F1 si F2:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include "d:\color.h"
float F1,F2,x,y,a,b;
float func1(float x,float y)
{
printf("Introduceti x si y -->");
scanf("%f %f",&x,&y);
F1=9*x+4/(1-log(y));
return F1;
}
float func2(float a,float b)
{
printf("\nIntroduceti a si b -->");
scanf("%f %f",&a,&b);
F2=3*a-log(F1)+tan(b);
return F2;
}
main()
{
float rez1,rez2;
rez1=func1(x,y);
printf("\n F1=%.2f",rez1);
rez2=func2(a,b);
printf("\nF2=%.2f",rez2);
}
Tren:Punctul_de_pornire,Punctul_destinatiei,Nr vagon etc:
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct tren{char Punctul_pornire[20];
char Punctul_destinatiei[20];
int Nr_vagon;
int Nr_locuri;
float Pretul;
};
main()
{
struct tren bibl[5];int i;
for(i=0;i<3;i++)
{
puts("Introduceti Punctul de pornire:");scanf("%s",&bibl[i].Punctul_pornire);
puts("Introduceti Punctul destinatiei:");scanf("%s",&bibl[i].Punctul_destinatiei);
puts("Introduceti Nr vagon:");scanf("%i",&bibl[i].Nr_vagon);
puts("Introduceti Nr locuri:");scanf("%i",&bibl[i].Nr_locuri);
puts("Introduceti pretul:");scanf("%f",&bibl[i].Pretul);}
//////// Ordinea alfabetica
for(char c='a';c<='z';c++)
for(i=0;i<3;i++)
if(strchr(strlwr(bibl[i].Punctul_pornire),c)-bibl[i].Punctul_pornire==0)
printf("%i).Trenul de la %s spre %s cu %i vag si %i loc , pretul este de %.2f lei
\n",i,bibl[i].Punctul_pornire,bibl[i].Punctul_destinatiei,
bibl[i].Nr_vagon,bibl[i].Nr_locuri,bibl[i].Pretul);
printf("\n");
////////Cautarea dupa un cimp de tip char
char oras[256];
printf("Introduceti numele orasului:\n");
scanf("%s",&oras);
for(i=0;i<3;i++)
if(strcmp(bibl[i].Punctul_pornire,oras)==0)
printf("%i).Trenul de la %s spre %s cu %i vag si %i loc , pretul este de %.2f lei
\n",i,bibl[i].Punctul_pornire,bibl[i].Punctul_destinatiei,
bibl[i].Nr_vagon,bibl[i].Nr_locuri,bibl[i].Pretul);
/////Cautare numerica
float Bilet;
float media;
printf("Introduceti pretul biletului:\n");
scanf("%f",&Bilet);
for(i=0;i<3;i++)
if(bibl[i].Pretul==Bilet)
printf("%i).Trenul de la %s spre %s cu %i vag si %i loc , pretul este de %.2f lei
\n",i,bibl[i].Punctul_pornire,bibl[i].Punctul_destinatiei,
bibl[i].Nr_vagon,bibl[i].Nr_locuri,bibl[i].Pretul);
printf("Preturile mai mari decit media sunt:\n");
media=(bibl[0].Pretul+bibl[1].Pretul+bibl[2].Pretul)/3;
for(i=0;i<3;i++)
if(bibl[i].Pretul>media)
printf("%i).Trenul de la %s spre %s cu %i vag si %i loc , pretul este de %.2f lei
\n",i,bibl[i].Punctul_pornire,bibl[i].Punctul_destinatiei,
bibl[i].Nr_vagon,bibl[i].Nr_locuri,bibl[i].Pretul);
}
In sirul s1….sn sa se inlocuiasca semnul “!” cu semnul”.”
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <stdlib.h>
int n,i,j,t;
char s[200];
main()
{
puts("Dati sirul:\n");
gets(s);
for(i=0;s[i]!=',';i++){
if(s[i]=='!')s[i]='.';
}
for(i=0;s[i]!='\0';i++){if(s[i]==',')j=i;}
for(;s[j]!=';';j++){
if(s[j]=='!')s[j]='.';
}
for(i=0;s[i]!='\0';i++)printf("%i",i%10);
printf("\n%s",s);
}
Calculati folosind functiile recursive
1+1/a^2+1/a^4+…+1/a^2n
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
#include<conio.h>
float recursive_sum(float sum, float a, int n);
int main()
{
// 1 + 1/a^2 + 1/a^4+ ... + 1/a^2n;
recursive_sum(0.0, 3.0, 3);
//printf('SUM = %d', result );
return 0;
}
float recursive_sum( float sum, float a, int n){
float current = 1.0 / pow( a, 2*n );
sum = sum + current;
printf("SUM= %f, N = %d, \n", sum, n);
if( n == 0){
return sum;
}
n = n-1;
return recursive_sum(sum, a, n);
}
Afisati numele ,prenumele,postul ,salariul lucratorului folosind structuri de date
#include<stdio.h>
#include<conio.h>
struct lucrator {
char numele[10];
char prenumele[10];
char postul[10];
int salariu;
};
struct anul_angajarii{ struct lucrator an;
int data;
int luna;
int anul;
};
main()
{
struct anul_angajarii lucr[3];
int i,n=1;
for (i=0; i<n; i++)
{
puts("Introduce numele angajatorului:");
scanf("%s", &lucr[i].an.numele);
puts("Introduce prenumele:");
scanf ("%s", &lucr[i].an.prenumele);
puts("Introduce postul:");
scanf("%s", &lucr[i].an.postul);
puts("Introduce data angajarii:");
scanf ("%i", &lucr[i].data);
puts("Introduce luna angajarii:");
scanf("%i", &lucr[i].luna);
puts("Introduce anul angajarii:");
scanf("%i", &lucr[i].anul);
puts("Salariul:");
scanf("%i", &lucr[i].an.salariu);
}
for (i=0; i<n; i++)
printf ("Numele Prenumele:%s %s postul:%s data/luna/anul:%i/%i/%i salariul:%i \n",
lucr[i].an.numele, lucr[i].an.prenumele, lucr[i].an.postul, lucr[i].data, lucr[i].luna, lucr[i].anul,
lucr[i].an.salariu);
}
Structuri de date:
#include<stdio.h>
#include<conio.h>
#include<math.h>
struct tren{char punct_pornire[15]; char punct_sosire[15]; char tip_tren[15]; float nrloc; float
pretbil; };
void intr(struct tren x[])
{
int i; for (i=0; i<1; i++) {
puts("intr locul pornire:"); scanf("%s",&x[i].punct_pornire);
puts("Intr punctul sosire:"); scanf("%s",&x[i].punct_sosire);
puts("intr tipul trenului:"); scanf("%s",&x[i].tip_tren);
puts("intr nr. locurilor:"); scanf("%f",&x[i].nrloc);
puts("intr pret:"); scanf("%f",&x[i].pretbil); } }
void afis(struct tren x[])
{
int i; for (i=0; i<1; i++)
printf("punctul de pornire=%s soseste in=%s tipul trenului este=%s nr de locuri in tren=%.2f
pretul biletului=%.2f\n",
x[i].punct_pornire,x[i].punct_sosire,x[i].tip_tren,x[i].nrloc,x[i].pretbil);
}
void main() {
int a,p;
p: {
struct tren a[10];
intr( a);
afis( a);
printf("Doriti inca o inregistrare?\n");
scanf("%d",&a);
if (a > 0) goto p;
}
}
Sa se afiseze un sir de carácter cu ajutorul pointerilor
#include<stdio.h>
#include<string.h>
#include<conio.h>
void afiseaza_prin_indici(char *sir){
int k;
printf("\n sirul afisat utilizandu-se tablou ci indice: ");
for(k=0; sir[k]; ++k)
putchar(sir[k]);
}
void afiseaza_prin_pointer(char *s){
printf("\n sirul afisat utilizandu-se pointeri: ");
while(*s)
putchar(*s++);
}
void main(void){
char sirdat[20];
printf("\n dati un sir de max 20 caractere:");
gets(sirdat);
afiseaza_prin_indici(sirdat);
afiseaza_prin_pointer(sirdat);
getch();
}