Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Мин и макс числа. (http://forum.oszone.net/showthread.php?t=185865)

Hardcore 19-09-2010 12:37 1498988

Мин и макс числа.
 
Given three real numbers x, y, z. Output the minimum and the maximum values of them. First output the minimum, then the maximum value
Example:
Input:
3.1 4.1 5.1

Output
3.1 5.1

Example:
Input:
5.2 4.1 1.0

Output
1.0 5.2

я решил эту задачу но мне контестор выдоет ошибку.
и обязательное условие этой задачи использовать оператор If и else.

посоветуйте где у меня ошибка?
#include <iostream>
using namespace std;
int main () {
double x,y,z;
cin>> x>>y>>z;
if (x>y && x>z) {
cout<<x<<endl;
}
else if (x<y && x<z) {
cout <<x<<endl;
}
if (y>x && y>z) {
cout<<y<<endl;
}
else if (y<x && y<z) {
cout <<y<<endl;
}
if (z>x && z>y) {
cout <<z<<endl;
}
else if (z<x && z<y) {
cout <<z<<endl;
}
return 0;
}

AlexTNT 19-09-2010 13:57 1499034

Не endl, а end1
В коде есть ошибка - при віполнении компилятор ничего не скажет. Но вместо єтого примера

Example:
Input:
5.2 4.1 1.0

Output
1.0 5.2


Выйдет этот

Example:
Input:
5.2 4.1 1.0

Output
5.2 1.0

Исправленный код:
Код:

#include <iostream>
using namespace std;
int main () {
double x,y,z;
cin>> x>>y>>z;

//Какое число меньше
if (x<y && x<z)
 {
cout <<x;
}
else if (y<x && y<z)
 {
cout <<y;
}
else if (z<x && z<y)
{
cout <<z;
}


//Какое число больше
if (x>y && x>z)
{
cout<<x;
}

else if (y>x && y>z)
 {
cout<<y;
}

else if (z>x && z>y)
{
cout <<z<<end1;
}


return 0;
}


Hardcore 19-09-2010 14:07 1499042

дело не в этом. с++ решает нормально. а вот када на контесторе проверяю говорит wrong answer.
может я где то что то не так сделал.

lxa85 19-09-2010 14:10 1499045

Цитата:

Цитата Hardcore
cout <<z<<endl; »

зачем каждый раз выводить endl ? Не проще ли это сделать один раз в конце программы?
И вообще, что за символ endl ? endline ? Конец строки и перевод каретки?
BTW
Цитата:

Цитата Hardcore
if (x>y && x>z) {
cout<<x<<endl;
}
else if (x<y && x<z) {
cout <<x<<endl;
} »

Конструкция не верна. Читаем задание, думаем.
Это я кстати чуть позже понял. Но одного взгляда на сложный и длинный код достаточно чтобы сказать, что он ошибочен. Потом уже присмотрелся и нашел ошибку :)

Hardcore 19-09-2010 14:15 1499053

аха. просто если после каждый писать эндлайн ответ выводит удобней.
чтоб не путаться.

lxa 85
"Это я кстати чуть позже понял. Но одного взгляда на сложный и длинный код достаточно чтобы сказать, что он ошибочен. Потом уже присмотрелся и нашел ошибку"
можешь указать мне на ошибку?

lxa85 19-09-2010 14:22 1499060

AlexTNT, не надо писать исправленный код Hardcore проходит некое on-line тестирование. Пусть думает сам, наше дело указать место ошибки, не ее саму, не тем более исправленную версию исходника писать не следует. Это медвежья будет услуга.
Это же индивидуальное, а не коллективное решение.
Не в обиду :)

Цитата:

Цитата Hardcore
можешь указать мне на ошибку? »

Неа! :)
Читай внимательно задание и смотри что пишет твоя программа.
Ошибочную конструкцию я тебе привел.

Hardcore 19-09-2010 14:45 1499077

я не прошу написать мне ответ.
просто я уже голову сломал. на с++ компилирвую и всё правильно.
када же на контесторе проверяю ошибка.

можно хотяб намек каконй нить.

lxa85 19-09-2010 14:55 1499081

Hardcore, хочешь дельный совет? Отдохни чуток! :)
Твоя программа компилируется и работает. Только выдает не правильный ответ. :)
1. Читай задание по словам и не торопясь.
2. Сравни выводы.
3. Проверь, а все ли ты учел. (Я те голову на отсечение даю, что ты этого не делал, а зря)
Наводящий вопрос. Сколько может быть комбинаций чисел и их неравенств? Какие вообще бывают числа на числовой прямой?

Смотри краевые и граничные условия.
и не забывай публиковать код, под тегом "[ code ]" - #

Hardcore 19-09-2010 15:04 1499094

я ещё more не проходил. так что я его использовать не могу.
а комбинаций могут быть 6 или 12.

lxa85 19-09-2010 16:25 1499146

Цитата:

Цитата Hardcore
а комбинаций могут быть 6 или 12. »

а все таки 6 или 12? А если проверю?
Hardcore, твоя проблема, присуща всем новичкам. Ты пытаешься писать код, не понимая сути.
Сядь спокойно, распиши математику этой задачи. Т.е. чтобы ты в любой момент мог показать и назвать максимальное число, минимальное число, их сумму, разницу и т.д. Сначала вычисли числовой пример, затем перейди к буквам. Напиши диапазоны изменения значения для каждой величины.
Проанализируй задачу! Только после этого ты сможешь написать правильное решение.
Ты пишешь математику через призму программирования, а надо наоборот писать программу через призму математики.

Drongo 19-09-2010 20:16 1499300

Цитата:

Цитата Hardcore
я ещё more не проходил. так что я его использовать не могу »

Имелось ввиду оформление вашего тега командами

[code]Ваш код[/code]

Hardcore 20-09-2010 17:37 1499991

решил задачу. Больше спасибо Lxa 85.
Вот мой код
Код:

#include <iostream>
#include <math.h>

using namespace std;

int main() {
double x, y, z;
cin >> x >> y >> z;

double min = x;
if (y < min)
min = y;

if (z < min)
min = z;

cout << min << endl;
double max = x;
if (y > max)
max = y;

if (z > max)
max = z;

cout << max << endl;

return 0;

}


Drongo 20-09-2010 19:59 1500134

Если нужна вариантивность ответа или придётся усложнить проверку максимального и минимального чисел, при произвольном количестве введённых, то можно использовать массив, размер меняется в контстнте size. Если заранее не известно количество проверяемых чисел, можно создавать динамические массивы.

Код:

#include <iostream>
using namespace std;

int main() {
  const int size = 3; // Наш размер массива. Можно изменить произвольно размер
  double z, min, max, array[size] = {0};

  // Ввод значений в массив
  for(int i = 0; i < size; i++){
      cout << "Array[" << i << "] = ";
      cin >> array[i];
    }

  max = min = array[0]; // Присваиваем первый элемент

  // Поиск максимального и минимального значений
  for(int i = 1; i < size; i++){ // Начинаем с 1-го элемента, т.к. array[0] мы уже присвоили
      if(array[i] < min)
        min = array[i];
      if(array[i] > max)
        max = array[i];
    }

  cout << "\nMinimal = " << min << endl;
  cout << "Maximal = " << max << endl;

  cin >> z;
  return 0;
}



Время: 05:52.

Время: 05:52.
© OSzone.net 2001-