Sunteți pe pagina 1din 7

Aplicatii structuri repetitive

Suma numerelor de la 1 la n
S se calculeze suma numerelor de la 1 la n. Rezolvare prin dou metode. Prima a fost metoda lui
Gauss. Cineva a spus povestea lui Gauss.

Suma numerelor de la 1 la n, varianta 1

A doua metod a fost cea cu contor adunat n bucl. Am vorbit despre noiunile de contor i acumulator.
ntrebai care metod e mai bun majoritatea ai ales-o pe prima pentru c era mai scurt. Am lmurit c
metoda a doua execut mult mai multe operaii.

Note de curs Prof. Isabela Coman


#include <stdio.h>

int main() {
int n, s, c;

scanf( "%d", &n );


s = 0;
c = 1;
while ( c <= n ) {
s = s + c;
c = c + 1;
}
printf( "Suma este %d\n", s );
return 0;
}

Putere a lui 2
k
Se d un numr n. S se spun dac n este de forma 2 (adic dac este putere a lui 2). Rspuns: dac
numrul este putere a lui doi nseamn c mprindu-l la doi n mod repetat vom obine n final 1. Vom
face mpririle numai atunci cnd n se mparte exact la doi. Iat o schem logic:

Note de curs Prof. Isabela Coman


//varianta 1
#include <stdio.h>
int main(){
int n;
scanf("%d", &n);
while(n%2==0){
n=n/2;
}
if(n==1)
printf("DA");
else
printf("NU");
return 0;
}

//varianta 2

#include <stdio.h>

int main(){
int n, p;
scanf("%d", &n);
p=1;
while(p<n){
p=p*2;
}
if(p==n)
printf("DA");
else
printf("NU");
return 0;
}

Contorizare cifre pare


Se dau 2 numere m si n. Sa se specifice daca cele doua numere au un numar impar de cifre pare.

#include <stdio.h>

int main()
{
int m,n,a;
scanf("%d%d",&m,&n);
a=0;
while (n){
Note de curs Prof. Isabela Coman
if(n%2==0)
a++;
n=n/10;
}
while (m){
if(m%2==0)
a++;
m=m/10;
}
if(a%2==1)
printf("DA");
else
printf("NU");
return 0;
}

Cifra cea mai mare.

#include <stdio.h>
#include <stdlib.h>

int main(){
int n, max;
scanf("%d", &n);
max=n%10; n=n/10;
while(n>0){
if(max<n%10)
max=n%10;
n=n/10
}
printf("%d", max);
return 0;
}

Cifra cea mai mica

#include <stdio.h>
#include <stdlib.h>

int main(){
int n, min;
scanf("%d", &n);
min=n%10; n=n/10;

Note de curs Prof. Isabela Coman


while(n>0){
if(min>n%10)

min=n%10;
n=n/10
}
printf("%d", min);
return 0;
}

Numarul de cifre din care este format n.

#include <stdio.h>

int main(){
int n,cifra,contor,cp;
scanf("%d", &n);
contor=0;
cifra=0;
while(cifra<10){
//verific daca cifra apare in n
cp=n;
while (cp>0 && cp%10!=cifra) {
cp=cp/10;
}
if (cp>0) { //cifra apare in numar
contor++;
}
cifra++;
}
printf("%d", contor);
return 0;
}

Afisati cifrele care apar in n

#include <stdio.h>

int main(){
int n,cifra,contor,cp;
scanf("%d", &n);
contor=0;
cifra=0;

Note de curs Prof. Isabela Coman


while(cifra<10){
//verific daca cifra apare in n
cp=n;
while (cp>0 && cp%10!=cifra) {
cp=cp/10;
}
if (cp>0) { //cifra apare in numar
//contor++;
printf("%d ", cifra);
}
cifra++;
}
//printf("%d", contor);
return 0;
}

Afisati cifrele care NU apar in n

#include <stdio.h>

int main(){
int n,cifra,contor,cp;
scanf("%d", &n);
contor=0;
cifra=0;
while(cifra<10){
//verific daca cifra apare in n
cp=n;
while (cp>0 && cp%10!=cifra) {
cp=cp/10;
}
if (cp==0) { //cifra apare in numar
//contor++;
printf("%d ", cifra);
}
cifra++;
}
//printf("%d", contor);
return 0;
}

Note de curs Prof. Isabela Coman


Tema:

Se dau 2 numere a si b.

1. Afisati cifrele comune celor 2 numere


2. Afisati cifrele care apartin numarului a dar nu apartin numarului
3. Afisati cifrele care nu apar nici in numarului a si nici numarului b

Optional: 5 probleme campion din lista

Note de curs Prof. Isabela Coman

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