Да се напише програма, която позволява да се въвеждат по две числа и знак за операция между тях (+ – * / ) и пресмята резултата от операцията. Това да се повтаря докато не се въведе невалиден знак за операция.
Всички задачи за:
Оградете кода с:
[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)
Мета
Препоръчваме хостинг:

double a,b; char z; do{ cout<<"Vavedete dve chisla: "; cin>>a>>b; cout<<"Vavedete znak za operatziq (+-*/): "; cin>>z; if(z=='+') cout<<"Otgovorut e: "<<a+b<<"\n\n"; if(z=='-') cout<<"Otgovorut e: "<<a-b<<"\n\n"; if(z=='*') cout<<"Otgovorut e: "<<a*b<<"\n\n"; if(z=='/') cout<<"Otgovorut e: "<<a/b<<"\n\n"; } while((z=='+')||(z=='-')||(z=='*')||(z=='/')); cout<<"Nevaliden znak za operatziq!"<<endl;И тука if! Ей, вие тримата на урока за switch били ли сте? Ники, виж коментара ми към решението на Дарин, че прегледах първо него като най-нов коментар.
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int x,y; char z; cout<<"Vuvedi 4islata :"; cin>>x>>y; cout<<endl<<"Vuvedi znak '+','-','*' ili '/' :"<<endl; do { cin>>z; if(z=='+') cout<<"subirame chislata :"<<x+y<<endl; if(z=='-') cout<<"Izvajdame 4islata :"<<x-y<<endl; if(z=='*') cout<<"Ymnojavame :"<<x*y<<endl; if(z=='/') cout<<"Delime :"<<x/y<<endl; } while ((z=='+')||(z=='-')||(z=='*')||(z=='/')); cout<<"Nevaliden znak"<<endl; system("PAUSE"); return EXIT_SUCCESS; }Ехеее, четвърта задача от тебе! Ти днес си се бил развихрил : ) Супер!
Мартине, задачата трябва малко да се коригира – така, както си я направил, ще може да се въведат стойности на числата само веднъж. Виж и коментара ми под решението на Дарин, за да не се повтарям и тук – решенията ви са подобни. Иначе в общи линии програмата е вярна.
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int x,y; char a; do { cout<<"Vavedete dve chisla: "; cin>>x>>y; cout<<"Vuvedete validen znak za operaciya: "; cin>>a; if (a=='+') cout<<"Sborut na dvete chisla e: "<<x+y<<endl; if (a=='-') cout<<"Razlikata na dvete chisla e: "<<x-y<<endl; if (a=='/') cout<<"Chastnoto na dvete chisla e: "<<x/y<<endl; if (a=='*') cout<<"Proizvedenieto na dvete chisla e :"<<x*y<<endl; } while (((a=='+')||(a=='-')||(a=='/')||(a=='*'))); cout<<"Nevalidna operaciya.\n"; system("pause"); return 0; }Вярно, но с някои малки забележки:
1) вместо с if щеше да е по-удачно с switch – той е точно за такива случаи. Ако ли пък си решил да ползваш if, то е добре поне следващите да са else if – така ако се изпълни командата след първия if, другите директно ще се прескочат, вместо да се проверяват.
2) какво правим, ако се въведе деление и делител 0?
Мда, не се сетихме за switch :D
Ето го моето решение, макар че малко мешаница се получи с тоя if
измежду case-овете, но..
А и моля, ако е възможно, предишното ми решение да бъде изтрито?
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { double x,y; char a; do { cout<<"Vavedete dve chisla: "; cin>>x>>y; cout<<"Vavedete validen znak za operaciya: "; cin>>a; switch (a) { case '+': cout<<"Sborut na dvete chisla e: "<<x+y<<endl;break; case '-': cout<<"Razlikata na dvete chisla e: "<<x-y<<endl;break; case '*': cout<<"Proiz. na dvete chisla e: "<<x*y<<endl;break; case '/':if (y!=0){ //Второто число трябва да е различно от 0 cout<<"Chastnoto na dvete chisla e: "<<x/y<<endl;break; } else { cout<<"Nevuzmojno delene."<<endl; //иначе няма да може да се раздели system ("pause"); return 0; } default: cout<<"Nevalidna operaciya."<<endl; } } while (((a=='+')||(a=='-')||(a=='*')||(a=='/'))); system("pause"); return 0; }Не е мешаница, напълно в реда на нещата си е. Ако е въведено 0 за y няма нужда да се спира програмата, може просто да ползваш break :-)
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { double a,b; char znak; bool walidnost=true; for (;walidnost;){ //Walidnost е булева променлива променяща се при невалиден знак cout<<"\nWuwedete dwe chisla i znak za operaciq mejdu tqh: "; cin>>a>>znak>>b; switch (znak){ case '+': cout<<a+b;break; case '-': cout<<a-b;break; case '/': if (b==0) cout<<"Newuzmojna operaciq"; //проверка за деление на 0 else cout<<a/b; break; case '*': cout<<a*b; break; default: cout<<"Ne rabotq pri takiwa uslowiq. Dovijdane.\n"; walidnost=false; } } system("PAUSE"); return EXIT_SUCCESS; }Дааа, интересно решение с булева променлива, браво! И с нестандартна употреба на for, показващa колко е гъвкав в C++ и как може да бъде използван за всичко :-). Все пак мисля, че тук while е по-удачен – не печелиш нищо от това да ползваш for, а губиш малко четливост.