Да се напише програма, която позволява да се въвеждат числа до въвеждане на 0 и после отпечатва:
- сумата на числата
- средното им аритметично
- броят на положителните
- максималното и минималното число
Може да се реши и само някое от условията.
Да се напише програма, която позволява да се въвеждат числа до въвеждане на 0 и после отпечатва:
Може да се реши и само някое от условията.
[c] за С++ програми [/c]
[pascal] за паскал [/pascal]

за Къде се намира точка
за Вмъкване и изтриване на елемент *
за Позицията на X




за Броят на максималните елементи




за Броят на максималните елементи
за Пари за закуска




за Ученици с дадена оценка




за По-големи от средното| П | В | С | Ч | П | С | Н |
|---|---|---|---|---|---|---|
| « февр. | ||||||
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
//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;//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;//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;//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;И при максималното число е добре да има проверката за (x!=0), защото може да се въвеждат и само отрицателни числа.
//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";#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 да е вътре в него. А ще ти кажа какво губиш – че имаш едно условие, което трябва да се проверява излишно за всяко завъртане на цикъла + програмата става ненужно по-сложна. По-добре изнеси инициализацията преди цикъла. А иначе другото е перфектно – и като код, и като форматиране – има дори коментари :-)
Тази идея ме огря чак след като качих решението. Причината за това е, че копирах кода от друга моя стара задача и съвсем не помислих за оптимизация на първо време. Сега се коригирам :)
#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; }Сега вече съм съгласен…
{ 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
Не е претрупана – перфектна е, браво!
#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; }#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; }