PDA

View Full Version : Въпрос по програмка на С++



h4x0r94
04-23-2011, 14:52
Задача 4. Напишете програма, която намира минималното (максималното) от две цели числа.

Това е една задачка, която се намира в книжката на Магдалина Тодорова за с++, която си купих преди няколко дни. Много ми е интересно как ще стане програмата, тъй като в уроците преди тази задача не са въведени функциите if и else. Би трябвало да не се използват, щом не са дадени, защото книгата е за съвсем начинаещи. Ако някой може да помогне.. :)

Ето как я написах , обаче с if и else


// Zad 3.cbp
#include <iostream>
using namespace std;
int main()
{
double a;
cout << "a= ";
cin >> a;
double b;
cout << "b= ";
cin >> b;
if (a < b) cout << "Po malkoto e " << a << "\n"; else
{
cout << "Po malkoto e " << b << "\n";
}
return 0;
}

lmao
04-23-2011, 15:54
а не е ли дадена контрукцията:
condition ? first_expression : second_expression;
?

h4x0r94
04-23-2011, 16:53
мисля, че не .. но все пак си нямам и на представа какво е това :D

Foreverbg
04-23-2011, 17:03
min(a,b) този функция можеш да ползваш. Връща ти по-малкото число.

K_O_L_E_V
04-23-2011, 17:17
Задача 4. Напишете програма, която намира минималното (максималното) от две цели числа.

Това е една задачка, която се намира в книжката на Магдалина Тодорова за с++, която си купих преди няколко дни. Много ми е интересно как ще стане програмата, тъй като в уроците преди тази задача не са въведени функциите if и else. Би трябвало да не се използват, щом не са дадени, защото книгата е за съвсем начинаещи. Ако някой може да помогне.. :)

Ето как я написах , обаче с if и else


// Zad 3.cbp
#include <iostream>
using namespace std;
int main()
{
double a;
cout << "a= ";
cin >> a;
double b;
cout << "b= ";
cin >> b;
if (a < b) cout << "Po malkoto e " << a << "\n"; else
{
cout << "Po malkoto e " << b << "\n";
}
return 0;
}


Функцията дадена по-горе ще ти свърши работа.

Има нещо объркано явно в книжката, без директно питане ( като if ) не виждам начин да разбереш кое е по-малко.

van1
04-23-2011, 17:20
Няма начин да стане без използването на IF.

Дори

а не е ли дадена контрукцията:
condition ? first_expression : second_expression;
?
е вид IF.

ПС: Написаното от h4x0r94 изключва случая, при който A и B са равни.

Foreverbg
04-23-2011, 17:26
ПС: Написаното от h4x0r94 изключва случая, при който A и B са равни.
Напротив, ще го сметне правилно. И по-горе написах, че има вградена функция min с която не използваш if.

lmao
04-23-2011, 17:41
тая вградена функция да не мислиш че е господ?

Return the lesser of two arguments
Returns the lesser of a and b.

The comparison uses operator< for the first version, and comp for the second.

The behavior of this function template is equivalent to:

template <class T> const T& min ( const T& a, const T& b ) {
return (a<b)?a:b; // or: return comp(a,b)?a:b; for the comp version
}

Foreverbg
04-23-2011, 17:45
тая вградена функция да не мислиш че е господ?

Return the lesser of two arguments
Returns the lesser of a and b.

The comparison uses operator< for the first version, and comp for the second.

The behavior of this function template is equivalent to:

template <class T> const T& min ( const T& a, const T& b ) {
return (a<b)?a:b; // or: return comp(a,b)?a:b; for the comp version
}
Еми искахте да напишете програмата без условен оператор и ви казах за функцията. И между другото като трябва да намирам минимум или максимум от числа си използвам тази функция. 100 пъти по удобна е отколкото да пишеш сумати ифове.

lmao
04-23-2011, 17:52
показвам ти за да видиш, че това че е написано просто Min(a,b) не означава, че не се използва условен оператор.

до автора: не се притеснявай от това че не е написано досега какво е иф.
Обикновено в такива книжки, задачите които се слагат след главата не е задължително да се решават само с материала, изучен до момента, ами може да се изисква малко ровене в интернет за информация и тн, така че спокойно си решавай задачите ;)

Foreverbg
04-23-2011, 19:18
Ама въпроса е ТИ да не използваш условен оператор. Функцията използва не отричам, ама ти функцията не я пишеш, защото е вградена => не пишеш условен оператор.

lmao
04-23-2011, 19:28
използваш функция, която използва условен оператор, ама понеже някой друг ти я е написал, значи ти не използваш условен оператор :D

по същият начин може и той сам да си напише една функция, която да сравнява две числа, ама в main ще си пише само името на функцията

h4x0r94
04-23-2011, 19:44
показвам ти за да видиш, че това че е написано просто Min(a,b) не означава, че не се използва условен оператор.

до автора: не се притеснявай от това че не е написано досега какво е иф.
Обикновено в такива книжки, задачите които се слагат след главата не е задължително да се решават само с материала, изучен до момента, ами може да се изисква малко ровене в интернет за информация и тн, така че спокойно си решавай задачите ;)
мерси, това исках да чуя :)

asp1r1n94
04-23-2011, 20:06
Добре с булев тип трябва да стане...очевадно

Eddie
04-23-2011, 23:06
Доколкото си спомням в тая книга на магдалинчето тернарния оператор ( ака условие ? върни нещо : върни друго нещо) се разглежда доста преди if оператора.

Иначе винаги можеш да си го направиш с булеви променливи.