N числа

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

  1. сумата им и произведението им
  2. най-малкото и най-голямото от тях
  3. броят на положителните
  4. дали всред тях се среща числото X
Публикувано в 11а, 11в с етикети . Постоянна връзка.

7 Responses to N числа

  1. dreanor каза:
    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        int n,suma,max,min,br,x,chislo;
        double proiz=1;
        cout<<"Wuwedete kolko chisla 6te wuwedete ";
        cin>>n;
        cout<<endl<<"Wuwedete chisloto za prowerka ";
        cin>>x;
        cout<<"Wuwedete chislata \n";
        bool tmp=false;
        suma=0;
        max=0;
        min=0;
        br=0;
        for (int i=1;i<=n;i++)
        {
          cin>>chislo;
          suma+=chislo;
          proiz*=chislo;
          if (chislo>0) br+=1;
          if (chislo==x) tmp=true;
          if(min==0) min=chislo;      
          if (chislo>max) max=chislo;
          if (chislo<min) min=chislo;
        }
        cout<<"Sumata na chislata e "<<suma<<endl;
        cout<<"Proizwedenieto na chislata e "<<proiz<<endl;
        cout<<"Broq na polojitelnite chisla e "<<br<<endl;
        cout<<"Nai-golqmoto chislo e "<<max<<" a nai malkoto e "<<min<<endl;
        if (tmp) cout<<x<<" se sreshta sred wuwedenite chisla \n";
        else cout <<x<<" ne se sreshta sred wuwedenite chisla \n";
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Преправих решението. Моля изтрийте предишното.

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

      Калояне, много добре направена задача, но има две грешки. Ето още една хакерска задача за всички, които четат този коментар: при какви стойности (валидни цели числа) кода за най-малко и най-голямо въведено число няма да работи вярно?

      • dreanor каза:

        За отрицателни числа максималното число си остава нула. Не го бях съобразил. А другата грешка вероятно е, че при въвеждане на отрицалтелно число за стойност на „n“ програмата прескача цикъла.

        #include <cstdlib>
        #include <iostream>
        
        using namespace std;
         
        int main(int argc, char *argv[])
        {
            int n,suma,max,min,br,x,chislo;
            double proiz=1;
            cout<<"Wuwedete kolko chisla 6te wuwedete ";
            cin>>n;
            cout<<endl<<"Wuwedete chisloto za prowerka ";
            cin>>x;
            cout<<"Wuwedete chislata \n";
            bool suwpadenie=false,maks=false;
            suma=0;
            max=0;
            min=0;
            br=0;
            for (int i=1;i<=abs(n);i++)
            {
              cin>>chislo;
              suma+=chislo;
              proiz*=chislo;
              if (chislo>0) br+=1;
              if (chislo==x) suwpadenie=true;
              if (min==0) min=chislo;
              if (maks)
                 { 
                     max=chislo;
                     maks=true;
                 }
              if (chislo>max) max=chislo;
              if (chislo<min) min=chislo;
            }
            cout<<"Sumata na chislata e "<<suma<<endl;
            cout<<"Proizwedenieto na chislata e "<<proiz<<endl;
            cout<<"Broq na polojitelnite chisla e "<<br<<endl;
            cout<<"Nai-golqmoto chislo e "<<max<<" a nai malkoto e "<<min<<endl;
            if (suwpadenie) cout<<x<<" se sreshta sred wuwedenite chisla \n";
            else cout <<x<<" ne se sreshta sred wuwedenite chisla \n";
            system("PAUSE");
            return EXIT_SUCCESS;
        }
        
        • Данаил каза:

          За кода за максимални числа – да, позна. Ни и така, както си го направил сега, пак няма да работи – тествай :-)

          Отрицателни стойности за N нямат смисъл. Но може да се въведе определена поредица от числа, при който кода за минимална стойност няма да работи вярно.

          • dreanor каза:

            Да пак не работи, защото съм забравил отрицание пред maks в условния оператор.

            #include <cstdlib>
            #include <iostream>
            
            using namespace std;
             
            int main(int argc, char *argv[])
            {
                int n,suma,max,min,br,x,chislo;
                double proiz=1;
                cout<<"Wuwedete kolko chisla 6te wuwedete ";
                cin>>n;
                cout<<endl<<"Wuwedete chisloto za prowerka ";
                cin>>x;
                cout<<"Wuwedete chislata n";
                bool suwpadenie=false,maks=false;
                suma=0;
                max=0;
                min=0;
                br=0;
                for (int i=1;i<=abs(n);i++)
                {
                  cin>>chislo;
                  suma+=chislo;
                  proiz*=chislo;
                  if (chislo>0) br+=1;
                  if (chislo==x) suwpadenie=true;
                  if (min==0) min=chislo;
                  if (!maks)
                     { 
                         max=chislo;
                         maks=true;
                     }
                  if (chislo>max) max=chislo;
                  if (chislo<min) min=chislo;
                }
                cout<<"Sumata na chislata e "<<suma<<endl;
                cout<<"Proizwedenieto na chislata e "<<proiz<<endl;
                cout<<"Broq na polojitelnite chisla e "<<br<<endl;
                cout<<"Nai-golqmoto chislo e "<<max<<" a nai malkoto e "<<min<<endl;
                if (suwpadenie) cout<<x<<" se sreshta sred wuwedenite chisla n";
                else cout <<x<<" ne se sreshta sred wuwedenite chisla n";
                system("PAUSE");
                return EXIT_SUCCESS;
            }
            
          • Данаил каза:

            Сега съм съгласен. Остава да коригираш кода за минималното число.

  2. dreanor каза:
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
      
    int main(int argc, char *argv[])
    {
        int n,suma,max,min,br,x,chislo;
        double proiz=1;
        cout<<"Wuwedete kolko chisla 6te wuwedete ";
        cin>>n;
        cout<<endl<<"Wuwedete chisloto za prowerka ";
        cin>>x;
        cout<<"Wuwedete chislata ";
        bool suwpadenie=false,maks=false,mintmp=false;
        suma=0;
        max=0;
        min=0;
        br=0;
        for (int i=1;i<=abs(n);i++)
        {
          cin>>chislo;
          suma+=chislo;
          proiz*=chislo;
          if (chislo>0) br+=1;
          if (chislo==x) suwpadenie=true;
          if (!maks)
             {
                 max=chislo;
                 maks=true;
             }
          if (!mintmp)
          {
                 min=chislo;
                 mintmp=true;
          }
          if (chislo>max) max=chislo;
          if (chislo<min) min=chislo;
        }
        cout<<"Sumata na chislata e "<<suma<<endl;
        cout<<"Proizwedenieto na chislata e "<<proiz<<endl;
        cout<<"Broq na polojitelnite chisla e "<<br<<endl;
        cout<<"Nai-golqmoto chislo e "<<max<<" a nai malkoto e "<<min<<endl;
        if (suwpadenie) cout<<x<<" se sreshta sred wuwedenite chisla n";
        else cout <<x<<" ne se sreshta sred wuwedenite chisla n";
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Финалното решение (надявам се).

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