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

Ce este gresit ?
Cerinţa
Se dă un vector cu n numere întregi. Să se înlocuiască toate elementele nule din vector cu partea întreagă a mediei aritmetice a elementelor nenule din vector.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii, reprezentând elementele vectorului.

Date de ieşire
Programul afișează pe ecran elementele vectorului, după înlocuire.

Restricţii şi precizări
1 ≤ n ≤ 200
elementele vectorului vor fi cuprinse între -1000 și 1000
vectorul va conține cel puțin un element nenul

Exemplu
Intrare

5
0 2 0 4 5
Ieșire

3 2 3 4 5
Explicație
Elementele nenule din vectorul dat sunt 2, 4 și 5. Media lor aritmetică este 3.666, iar partea întreagă a ei este

Anexe:

Razzvy: Daca vrei sa-ti vezi greselile, incearca sa afisezi mai multe lucruri la un exemplu. De exemplu, afiseaza suma s si vezi daca e buna. Apoi, incearca un exemplu cu numere negative(ti se spune ca elementele pot fi mai mari de -1000).
Razzvy: Inca ceva: vectorul x este numerotat de la 0. Daca tu faci citirea de la 1, atunci vei avea nevoie de un element in plus, adica atunci cand il declari ar trebui sa aiba 201 elemente, nu 200: x[201]

Răspunsuri la întrebare

Răspuns de uleiaalex
0

Aici ai rezolvarea in C++. Sa iti fie de folos.


#include <iostream>

using namespace std;


int ParteIntreaga(int a[], int n)

{

   int sum = 0;

   int cnt = 0;

   

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

   {

       if(a[i] != 0)

       {

           sum += a[i];

           cnt++;

       }

   }

   

   float ma = (float)sum / (float)cnt;

   int pi = (int)ma;

   

   return pi;

}


void Afisare(int a[], int n)

{

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

   {

       cout<<a[i]<<" ";

   }

   cout<<endl;

}


int main()

{

   int m[] = {0, 2, 0, 4, 5};

   int n = 5;

   

   Afisare(m,n);

   

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

   {

       if (m[i] == 0)

       m[i] = ParteIntreaga(m,n);

   }

   

   Afisare(m,n);

   return 0;

}

Alte întrebări interesante