Sunteți pe pagina 1din 3

3.

4 Probleme rezolvate
Această secţiune prezintă câteva probleme care să familiarizeze cititorul cu
utilizarea datelor de tip scalar în cadrul unor operaţii simple şi cu facilităţile de
citire a informaţiilor de la tastatură, respectiv afişarea acestora pe ecran, oferite
de funcţiile C standard scanf() şi printf(). Deoarece atât instrucţiunile cât şi
operatorii specifici limbajului C constituie subiectul următorului capitol,
rezolvările problemelor nu sunt foarte elaborate, în sensul că nu includ, de
exemplu, secvenţe dedicate verificării datelor introduse de la tastatură. Păstrarea
simplităţii a avut drept obiectiv uşurarea înţelegerii noţiunilor prezentate, mai
ales pentru „începători”. Capitolele următoare vor prezenta, în mod gradat,
rezolvări de probleme din ce în ce mai complexe şi mai complete.

Problema 1 O dată calendaristică, introdusă de la tastatură sub forma a trei


valori întregi (zi, lună, an), trebuie afişată pe ecran sub forma zi/lună/an,
păstrând din valoarea anului doar ultimele două cifre. Scrieţi programul care să
realizeze această cerinţă.
#include <stdio.h>
void main( )
{int zi,luna,an;
printf("Introduceti ziua: "); scanf("%d", &zi);
printf("Introduceti luna: "); scanf("%d", &luna);
printf("Introduceti anul: "); scanf("%d", &an);
printf("%2d/%2d/%02d",zi,luna, an%100);
/* Formatul de afişare %02d este folosit pentru funcţionarea
corectă a programului chiar şi în situaţii similare anului 2003,
deoarece restul împărţirii la 100 a valorii 2003 este 3 (o singură
cifră), iar cerinţa era să se afişeze 03 (două cifre)
*/
}

Problema 2 Două momente de timp sunt exprimate în ore, minute şi secunde


(valori de tip întreg). Să se calculeze suma lor, exprimată în acelaşi mod.
#include <stdio.h>
void main( )
{int h1,h2,m1,m2,s1,s2,h,m,s;
printf("Introduceti primul moment de timp): \n");
scanf("%d%d%d", &h1, &m1, &s1);
printf("Introduceti al doilea moment de timp: \n");
scanf("%d%d%d", &h2, &m2, &s2);
s=s1+s2;
m=m1+m2+s/60;
s=s%60;
h=(h1+h2+m/60)%24;
m=m%60;
printf("suma este: %02d : %02d : %02d", h, m, s);
}

1
Problema 3 Scrieţi un program care să citească de la tastatură trei valori întregi,
pozitive, strict mai mici decât 1000, pe care apoi să le tipărească împreună cu
media lor aritmetică sub forma:
A = *** B = *** C = *** MEDIA = ***.**
S-a notat prin * o poziţie pe care se va afişa un caracter ce face parte din
reprezentarea valorii numerice respective.
#include <stdio.h>
void main( )
{int a,b,c;
float media;
printf("Valorile pe care urmeaza sa le introduceti de la tastatura trebuie sa
fie:\n\t de tip intreg, pozitive si strict mai mici decat 1000.\nIn caz contrar,
programul va furniza rezultate eronate!\n);
printf("Introduceti A: "); scanf("%d",&a);
printf("Introduceti B: "); scanf("%d",&b);
printf("Introduceti C: "); scanf("%d",&c);
media = (float)(a+b+c)/3;
printf("\nA = %3d B = %3d C = %3d Media = %6.2f\n",a,b,c,media);
}

Problema 4 Considerând Raza - raza unui cerc, Lung - lungimea cercului şi


Aria – suprafaţa acestuia (valori numerice de tip real), să se scrie un program
care să realizeze următoarele operaţii:
- să citească Raza de la tastatură (o valoare strict pozitivă);
- să calculeze lungimea şi aria cercului, folosind formulele consacrate, şi să
afişeze următoarele informaţii:
Raza cercului: ****.***
Lungimea cercului: ****.***
Aria cercului: *****.****
#include <stdio.h>
#include <math.h>
void main( )
{float raza,lung,aria;
printf("Introduceti raza cercului (neaparat o valoare strict pozitiva!):");
scanf("%f",&raza);
lung= 2 * 3.1415 * raza;
aria= 3.1415 * raza * raza;
/* Din biblioteca math.h putem folosi constanta predefinita M_PI. Liniile
anterioare devin:
lung= 2 * M_PI * raza;
aria= M_PI * raza * raza;
*/
printf("Raza cercului: %8.3f\nLungimea cercului: %8.3f\nAria:%10.4f", raza,
lung, aria);
}

2
Problema 5 Scrieţi un program care să citească de la tastatură un număr şi să
afişeze sub forma de tabel: numărul respectiv, numărul ridicat la puterea a doua,
numărul ridicat la puterea a treia şi numărul ridicat la puterea a patra.
#include <stdio.h>
#include <math.h>
void main( )
{double nr;
printf("Introduceţi nr: ");
scanf("%lf",&nr);
printf("%6.2lf\t%6.2lf\t%6.2lf\t%6.2lf\n", nr, nr*nr, nr*nr*nr, nr*nr*nr*nr);
/* Din biblioteca math.h se poate folosi funcţia pow() pentru a ridica un număr
la o anumită putere specificată. Linia anterioară poate fi scrisă astfel:
printf("%6.2lf\t%6.2lf\t%6.2lf\t%6.2lf\n", nr, pow(nr,2), pow(nr,3), pow(nr,4));
*/
}

S-ar putea să vă placă și