Informatică, întrebare adresată de gabitudorachescu, 8 ani în urmă

1.Să se afișeze toate numerele divizibile cu 3 din intervalul [a,b], a<=b, a și b numere întregi date de la tastatură.

2.Să se afișeze toate numerele de 3 cifre care sunt pare.

3.Se citesc n numere întregi. Să se numere și să se afișeze toate numerele impare​

Răspunsuri la întrebare

Răspuns de ionatanferariu
1

Răspuns:

1.

Pentru a genera un interval, ai nevoie de o structură repetitivă. Eu îți recomand să folosești for, pentru că este mai ușor de folosit. Vei declara o variabilă contor i, pe care o vei inițializa cu primul element care se află la capătul intervalului. El parcurge fiecare element până când este egal cu b, crescând cu 1 de fiecare dată. La fiecare pas, vei verifica dacă i este divizibil cu 3 și îl vei afișa.

Varianta mea ar fi cam așa:

int main()

{

int a, b, i;

cin >> a >> b;

for(i=a; i <= b; i++)

{

if(i%3==0) //dacă restul împărțirii lui i la 3 este 0

cout << i << " ";

}

}

Și acum să vedem un exemplu. Să presupunem că se citesc de la tastatură a = 10, b = 15.

Conform programului de mai sus, variabila i se inițializează cu a, adică cu 10, deci i=10. Verificăm dacă 10 se împarte exact la 3: 10%3=3, ceea ce este fals, prin urmare numărul nu se va afișa. Acum, după ce s-a executat blocul de instrucțiuni din for, shortcut-ul i++ are semnificația că i crește cu 1, deci i = 11. El continuă să crească și să execute instrucțiunile până este mai mare decât b. Cu alte cuvinte, i crește cât timp este mai mic sau egal decât b. Se va afișa pe ecran 12 15.

2.

Problema ne cere să afișăm pe ecran toate numerele pare de 3 cifre. Cel mai mic număr par de 3 cifre este 100, iar cel mai mare număr par de trei cifre este 998. Putem folosi la fel de bine for. Numai că, observăm că numerele de 3 cifre care sunt pare au ultima cifră 0, 2, 4, 6 sau 8. Prin urmare, nu mai avem nevoie să comparăm, ci trebuie să creștem i cu 2 pași. Variabila i va fi inițializată cu 100 și instrucțiunea se va executa atât timp cât i <= 998, crescând pe i cu 2.

Soluția mea ar fi:

for(i=100; i <= 998; i+=2)

cout << i << " ";

Operația de verificare a parității nu este relevantă, pentru că depășește timpul de execuție.

3.

De data aceasta ne putem folosi de un vector. Vectorul va avea, să zicem, 100 de elemente. Se citesc succesiv elementele vectorului, verificăm dacă sunt impare și le afișăm.

int main()

{

int n, i, v[100];

cin >> n; //citesc numarul de elemente

for(i=0; i<n; i++)

cin >> v[i]; //citesc succesiv cele n elemente

int nr = 0;

for(i=0; i < n; i++)

if (v[i] % 2 == 1)

{ cout << v[i] << " ";

nr++;

}

cout << "Nr numerelor impare este " << nr;

}

Dacă te-a ajutat, mi-ai face plăcere să-mi dai coroana.

Alte întrebări interesante