Да се въведат 4 числа и да се отпечата броят и н сумата на положителните.
Всички задачи за:
Оградете кода с:
[c] за С++ програми [/c]
[pascal] за паскал [/pascal]Достъп до сайта:
С повишена трудност:
Задачите със звездичка са с повишена трудност - решавайте ги, ако сте решили другите.-
Последни задачи:
Последни решения:
- Marin

за Къде се намира точка - Marin

за Вмъкване и изтриване на елемент * - Marin

за Позицията на X - Alexander1





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





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

за Пари за закуска - Alexander1





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





за По-големи от средното
- Marin
Топ участници за момента:
kaloyan164 решения/коментараGadget131 решения/коментараdreanor112 решения/коментараmarant74 решения/коментараsup3rEva68 решения/коментараБоряна65 решения/коментараNadq53 решения/коментараmaleboldjia48 решения/коментараkrisizdravi9543 решения/коментараMartinPlamenov38 решения/коментараЗадачи за дата:
август 2026 П В С Ч П С Н « февр. 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 31 Предишни задачи:
- февруари 2017 (38)
- януари 2017 (16)
- декември 2016 (17)
- ноември 2016 (14)
- октомври 2016 (26)
- юни 2016 (3)
- май 2016 (15)
- април 2016 (12)
- март 2016 (14)
- февруари 2016 (9)
- май 2015 (2)
- април 2015 (8)
- март 2015 (8)
- февруари 2015 (13)
- януари 2015 (11)
- декември 2014 (9)
- ноември 2014 (24)
- октомври 2014 (16)
- юни 2014 (2)
- май 2014 (8)
- април 2014 (10)
- март 2014 (14)
- февруари 2014 (22)
- януари 2014 (25)
- декември 2013 (27)
- ноември 2013 (37)
- октомври 2013 (38)
- септември 2013 (2)
- юни 2013 (6)
- май 2013 (10)
- април 2013 (19)
- март 2013 (35)
- февруари 2013 (32)
- януари 2013 (29)
- декември 2012 (28)
- ноември 2012 (37)
- октомври 2012 (26)
- септември 2012 (3)
- май 2012 (16)
- април 2012 (16)
- март 2012 (27)
- февруари 2012 (10)
- януари 2012 (13)
- ноември 2011 (16)
- октомври 2011 (8)
- април 2011 (4)
- март 2011 (19)
- февруари 2011 (19)
- януари 2011 (18)
- декември 2010 (25)
- ноември 2010 (10)
- октомври 2010 (33)
- септември 2010 (1)
По теми:
- break
- бройни системи
- булев тип
- вариантен избор
- вложена условна команда
- вложени цикли
- дати
- динамична променлива
- дървета
- запис
- изброим тип
- класове
- манипулатори на извеждането
- масив
- масив от записи
- многомерни масиви
- множества
- модули
- низ
- низове
- низови функции
- опашки
- отпечатване
- преобразуване на типовете
- реален тип
- рекурсия
- символен тип
- сортиране на масиви
- специфични операции за цели числа
- списъци
- стекове
- структури
- текстов файл
- типизирани файлове
- условна команда
- файл
- функции
- хедър файлове
- целочислен тип
- цикъл do-while
- цикъл for
- цикъл repeat
- цикъл while
- цифри на число
- шах
Всички задачи:
- 2016-2017 (111)
- Архив задачи (791)
- 2010-2011 (131)
- Информатика (131)
- 2011-2012 (109)
- ЗИП Информатика (4)
- 10в (4)
- Информатика (105)
- ЗИП Информатика (4)
- 2012-2013 (227)
- 2013-2014 (182)
- 2014-2015 (91)
- 2015-2016 (53)
- 2010-2011 (131)
Мета
Препоръчваме хостинг:

Ееее ударих го от земята това преобразуване на тия типове :D
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { long a,b,c,d; cout<<"Vavedi purvoto chislo: "; cin>>a; cout<<"Vavedi vtoroto chislo: "; cin>>b; cout<<"Vavedi tretoto chislo: "; cin>>c; cout<<"Vavedi chetvurtoto chislo: "; cin>>d; cout<<endl; cout<<"Broyat na vuvedenite polojitelni chisla e: "<< bool(a>0)+ bool(b>0)+ bool(c>0)+ bool(d>0)<<endl; if (a>0) a=a; else a=0; if (b>0) b=b; else b=0; if (c>0) c=c; else c=0; if (d>0) d=d; else d=0; cout<<"Sumata na polojitelnite chisla e: "<<a+b+c+d<<endl; system("pause"); return 0; }Браво, напредваш. Почти го удари в земята :-) Няма нужда от явно преобразуване обаче – дори да не укажеш такова, щом има аритметични операции компилатора ще извърши неявно преобразуване.
Тоест вместо:
Може да напишеш:
И още вместо:
Може да ползваш:
Или още по-краткото и без условна команда
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { long a,b,c,d; cout<<"Vavedete purvoto chislo: "<<endl; cin>>a; cout<<"Vavedete vtoroto chislo: "<<endl; cin>>b; cout<<"Vavedete tretoto chislo: "<<endl; cin>>c; cout<<"Vavedete chetvurtoto chislo: "<<endl; cin>>d; cout<<"Broqat na vuvedenite polojitelni chisla e:"; cout<<(a>0)+(b>0)+(c>0)+(d>0)<<endl; if (a<=0) a=0; if (b<=0) b=0; if (c<=0) c=0; if (d<=0) d=0; cout<<"Sumata na polojitelnite chisla e: "<<a+b+c+d<<endl; system("PAUSE"); return EXIT_SUCCESS; }Вярно! Но може и въобще без условна команда – разгледайте другите решения от задачите за преобразуване между типовете…
int main(int argc, char *argv[])
{
long a,b,c,d;
cout<>a;
cout<>b;
cout<>c;
cout<>d;
cout<<endl;
cout<<"Broyat na vuvedenite polojitelni chisla e: "<0)+
bool(b>0)+
bool(c>0)+
bool(d>0)<0)
a=a;
else a=0;
if (b>0)
b=b;
else b=0;
if (c>0)
c=c;
else c=0;
if (d>0)
d=d;
else d=0;
cout<<"Sumata na polojitelnite chisla e: "<<a+b+c+d<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Весо, това решение изглежда съвсем като горното на maleboldjia, така че не се брои. И освен това ограждай решението с [ c ] и [ /c ], иначе не се извежда коректно кода…
#include <cstdlib> #include <iostream> using namespace std; int suma=0; int broi=0; int polojitelno (int a){ if (a>0){ suma+=a; broi+=1; } } // funkciq prowerqwashta dali chisloto e polojitelno // i go pribawq kum sumata i broqt na polojitelnite int main(int argc, char *argv[]) { int a,b,c,d; cout<<"Wuwedi chetiri chisla\n"; cin>>a>>b>>c>>d; polojitelno(a); polojitelno(b); polojitelno(c); polojitelno(d); cout<<"Sumata na polojitelnite e "<<suma<<" a broq im e "<<broi<<endl; system("pause"); return 0; }Калояне, задачата е вярна. Добре си се сетил и да ползваш глобални променливи, и да ги инициализираш.
Но глобални променливи трябва да се използват за предаване на стойности от и към функции само в краен случай, защото може да направят една голяма програма с трудно откриваеми странични ефекти. Подсети ме да ти обясня и да ти дам примери. По принцип, разглеждай функцията като нещо с вход и изход – подаваш и нещо на входа, получаваш нещо на изхода, но функцията не помни нищо някъде другаде. Ако го помни, тогава едно извикване на функцията междувременно вече променя действието й и резултата, който ще върне. Тази функция става зависима от това колко пъти е извикана и от къде. Това са страничните ефекти, за които споменах. Ако функцията има само вход и изход и не помни нищо от предишните извиквания, тогава и от 1000 места да я извикаш, все ще си връща същия резултат.
Конкретно за тази задача може да направиш функцията така:
#include <cstdlib> #include <iostream> using namespace std; int polojitelno (int a, int &suma){ // сумата я предаваме като параметър, предаван по адрес int broi = (a>0); // ако е положително, преброяваме го if (broi) suma+=a; // и го прибаваме към сумата return broi; } int main(int argc, char *argv[]) { int a,b,c,d, suma; cout<<"Wuwedi chetiri chisla\n"; cin>>a>>b>>c>>d; suma=0; // инициализираме преди използването cout<<"Broiat na polojitelnite e "<<polojitelno(a, suma) + polojitelno(b, suma) + polojitelno(c, suma) + polojitelno(d, suma) << endl; cout<<"Sumata na polojitelnite e "<<suma<<endl; system("pause"); return 0; }Или дори така:
#include <cstdlib> #include <iostream> using namespace std; int polojitelno (int &suma){ int a; cin>>a; // въвеждаме си числото във функцията, защото не ни е нужно в главната програма int broi = (a>0); // ако е положително, преброяваме го if (broi) suma+=a; // и го прибаваме към сумата return broi; } int main(int argc, char *argv[]) { int suma; cout<<"Wuwedi chetiri chisla\n"; suma=0; // инициализираме преди използването cout<<"Broiat na polojitelnite e "<<polojitelno(suma) + polojitelno(suma) + polojitelno(suma) + polojitelno(suma) << endl; cout<<"Sumata na polojitelnite e "<<suma<<endl; system("pause"); return 0; }От двете решения в първото функцията е написана да е по-универсална (защото можем да подадем на функцията всякакво число – и въведено от клавиатурата, и получено по друг начин), а втората е по-оптимална за конкретното условие, защото всички повтаращи се команди са изнесени в нея. Но и в двата случая не ползвам глобални променливи, така че функцията е независима от броят и реда на извикванията.