Числа до въвеждане на 0

Да се напише програма, която позволява да се въвеждат числа до въвеждане на 0 и после отпечатва:

  1. сумата на числата
  2. средното им аритметично
  3. броят на положителните
  4. максималното и минималното число

Може да се реши и само някое от условията.

Публикувано в 11а, 11в с етикети . Постоянна връзка.

14 Responses to Числа до въвеждане на 0

  1. Gadget каза:
     
    //Reshenie na poduslovie 1
        int x,s;
        s=0;
        while(x!=0){
            cout<<"Vavedi chislo: ";
            cin>>x;
            s=s+x;
          }
          cout<<"Sumata e: "<<s<<endl;
    
  2. Gadget каза:
     
    //Reshenie na poduslovie 2
        int x,br=-1;
        double sr=0;
        while(x!=0){
            cout<<"Vavedi chislo: ";
            cin>>x;
            br++;
            sr=sr+x;
        }
        cout<<"Srednoto aritmetichno na chislata e: "<<sr/br<<endl;
    
  3. Gadget каза:
     
    //Reshenie na poduslovie 3
        int x,br=0;
        while(x!=0){
                cout<<"Vavedi chislo: ";
                cin>>x;
                if(x>0)
                 br++;
        }
        cout<<"Broqt na polojitelnite chisla e: "<<br<<endl;
    
  4. Gadget каза:
     
    //Reshenie na poduslovie 4
        int x,min,max=0,br=0;
        while(x!=0){
               cout<<"Vavedi chislo: ";
               cin>>x;
               //Pri purvata iteratziq vzimame za nai-malko chislo purvoto vuvedeno chislo
               if(br==0)
               min=x;
               //Pri vuvejdane na po-golqma stoinost max prisvoqva
               if(max<x)
                max=x;
                //Pri vuvejdane na po-malka stoinost min prisvoqva
               if((min>x)&&(x!=0))
                min=x;
                br++;
        }
        cout<<"Maksimalnoto chislo e: "<<max<<endl; 
        cout<<"Minimalnoto chislo e: "<<min<<endl;
  5. Gadget каза:
     
    //Obsht variant na zadachata
        int x,s=0,p=0,br=0,max=0,min;
        while(x!=0){
                cout<<"Vavedi chislo: ";
                cin>>x;
                //1 i 2
                s=s+x;
                br++;
                //3
                if(x>0)
                 p++;
                //4
                if(br==0)
                 min=x;
                if(max<x)
                 max=x;
                if((min>x)&&(x!=0))
                 min=x;
          }
          cout<<"\n\nSumata e: "<<s<<"\n\n";
          cout<<"Srednoto aritmetichno na vuvedenite chisla e: "<<(double)s/(br-1)<<"\n\n";
          cout<<"Broqt na vuvedenite polojitelni chisla e: "<<p<<"\n\n";
          cout<<"Maksimalnoto chislo e: "<<max<<"\n\n"; 
          cout<<"Minimalnoto chislo e: "<<min<<"\n\n";
    
  6. dreanor каза:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        int suma=0, br_pol=0, br=1, chislo;
        int min,max;
        cout<<"Wuwedete chisla (0 za prekratqwane) \n";
        cin>>chislo;
        for (;chislo!=0;cin>>chislo,br++)
        {
            if (cin.good())                 //Проверка за валиден вход
            {
                suma+=chislo;
                if (chislo>0) br_pol++;
                if (br==1)
                 {
                     max=chislo;
                     min=chislo;
                 }
                if (chislo>max) max=chislo;
                if (chislo<min) min=chislo;
            }
            else {                           //Въвеждане на нови стойности
                  cin.clear(); cin.ignore(); //Изчиства се буферът и се пропуска 1 символ 
                  cout<<"Newaliden whod. Wuwedete otnowo. \n";
                  --br;                         
                 }
    
        }
        cout<<"Sumata na chislata e "<<suma
            <<"\nBroqt na polojitelnite e "<<br_pol
            <<"\nSrednata stoinost na chislata e "<<(float)suma/(br-1)
            <<"\nNai-golqmoto wuwedeno chislo e "<<max<<". Nai-malkoto wuwedeno e "<<min<<endl;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Има един малък проблем при въвеждане на повече от един невалидни символи в низ. В този случай се повтаря реда „Newaliden whod. Wuwedete otnowo. „, но ще го оправя по-късно.

    • Данаил каза:

      След като така или иначе въвеждаш първото число преди цикъла, не виждам какво печелиш от това инициализацията на min и max да е вътре в него. А ще ти кажа какво губиш – че имаш едно условие, което трябва да се проверява излишно за всяко завъртане на цикъла + програмата става ненужно по-сложна. По-добре изнеси инициализацията преди цикъла. А иначе другото е перфектно – и като код, и като форматиране – има дори коментари :-)

      • dreanor каза:

        Тази идея ме огря чак след като качих решението. Причината за това е, че копирах кода от друга моя стара задача и съвсем не помислих за оптимизация на първо време. Сега се коригирам :)

        #include <cstdlib>
        #include <iostream>
        
        using namespace std;
        
        int main(int argc, char *argv[])
        {
            int suma=0, br_pol=0, br=1, chislo;
            int min,max;
            cout<<"Wuwedete chisla (0 za prekratqwane) \n";
            cin>>chislo;
            min=max=chislo;
            for (;chislo!=0;cin>>chislo,br++)
            {
                if (cin.good())                 //Проверка за валиден вход
                {
                    suma+=chislo;
                    if (chislo>0) br_pol++;
                    if (chislo>max) max=chislo;
                    if (chislo<min) min=chislo;
                }
                else {                           //Въвеждане на нови стойности
                      cin.clear(); cin.ignore(); //Изчиства се буферът и се пропуска 1 символ 
                      --br;                    
                     }
        
            }
            cout<<"Sumata na chislata e "<<suma
                <<"\nBroqt na polojitelnite e "<<br_pol
                <<"\nSrednata stoinost na chislata e "<<(float)suma/(br-1)
                <<"\nNai-golqmoto wuwedeno chislo e "<<max<<". Nai-malkoto wuwedeno e "<<min<<endl;
            system("PAUSE");
            return EXIT_SUCCESS;
        }
        
  7. krisizdravi95 каза:
    {
     int n, suma=0, br_pol=0, min, max;
    cout<<"Vuvedete chisla do 0 ";
    cin>>n;
    int br=1;
    suma+=n;
    if(n>0)
      br_pol++;
    min=n;
    max=n;
    while(n!=0)
    {cin>>n;
      suma+=n;
      br++;
      if(n>0)
        br_pol++;
      if(n>max)
        max=n;
      if(n<min)
        min=n;
    }
    
    double sr=(double)suma/br;
    
    cout<<"Sumata na vuvedenite chisla e  "<<suma<<"n";
    cout<<"Broqt na polojitelnite e  "<<br_pol<<"n";
    cout<<"Srednoto aritmetichno e ravno na  "<<sr<<"n";
    cout<<"Nai-malkoto vuvedeno chislo e "<<min<<", a nai-golqmoto e "<<max<<"n";
    
    return 0;
    
    }
    
    

    Малко претрупана изглежда, но за 20 минути такъв е резултатът. Всякакви подробности оставям за утре в часа :D

  8. marant каза:
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
        int i,suma,br,min,max,pol,chislo;
        cin>>i; suma=0; pol=0;
        br=0;
        min=0;
        max=0;
        if(i<'a') {
        while(i!=0)
        {
                   chislo=i;
        { if(chislo>max) max=chislo;
          if(chislo<min) min=chislo;
        }
        { if(chislo>0)
             pol++;
          else cout<<"";
        }
             br++;
            suma+=i;
        cin>>i;         
                  }
                  cout<<"napisa 0"<<' '<<endl;
                  cout<<"Broq ma pol. chisla e: "<<pol<<endl;
                  cout<<"sumata e: "<<suma<<endl;
                   cout<<"srednoto aritmeti4no e: "<<suma/br<<endl;
                   cout<<"nai-golqmoto 4islo e: "<<max<<endl;
                   cout<<"nai-malkoto 4islo e: "<<min<<endl; 
                   }
     else cout<<"ne e vuvedeno 4islo"<<endl;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
     
    • marant каза:
      #include <cstdlib>
      #include <iostream>
        
      using namespace std;
        
      int main(int argc, char *argv[])
      {
          int i,suma,br,min,max,pol;
          cin>>i; 
                  suma=0; 
                    pol=0;
                      br=0;
                        max=i;
          while(i!=0)
          {
                    
          { if(i>max) max=i;
            if(i<min) min=i;
          }
          { if(i>0)
               pol++;
               else cout<<"";
          }
               br++;
                  suma+=i;
          cin>>i;        
                    }
                    cout<<"napisa 0"<<' '<<endl;
                    cout<<"Broq ma pol. chisla e: "<<pol<<endl;
                    cout<<"sumata e: "<<suma<<endl;
                     cout<<"srednoto aritmeti4no e: "<<suma/br<<endl;
                     cout<<"nai-golqmoto 4islo e: "<<max<<endl;
                     cout<<"nai-malkoto 4islo e: "<<min<<endl;
                     
      
          system("PAUSE");
          return EXIT_SUCCESS;
      }
      

Вашият коментар