Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2011, 22:38   #1
Porcupine
 
Аватар для Porcupine
 
Регистрация: 21.06.2011
Сообщений: 5
По умолчанию Простая задача найти 2 макс. числа из 10

Задача из Дейтелов. По идее я не должен знать массивы и всякие и, или.
Мой вариант, но может есть способ проще.
Код:
#include <iostream>

using namespace std;

int main()
{
   int counter = 1;
   double number;
   double largest = 0;
   double largest2 = 0;

   while ( counter <= 10 )
   {
      cout << "vvedite chislo nomer " << counter << ". ";
      cin >> number;
      if ( number >= largest )
      {
         largest2 = largest;
         largest = number;
      }
      else if (number > largest2)
         largest2 = number;
      counter++;
   }

   cout << "\nMaximalnii chisla: " << largest << " i " << largest2 << endl;

   return 0;
}
Porcupine вне форума Ответить с цитированием
Старый 05.08.2011, 03:33   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Хорошее решение.

Цитата:
double largest = 0;
double largest2 = 0;
а что отрицательных чисел быть не может ?
onewho вне форума Ответить с цитированием
Старый 05.08.2011, 08:24   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Есть читерский способ - отсортировать массив по убыванию и взять первые два числа.
_-Re@l-_ вне форума Ответить с цитированием
Старый 05.08.2011, 08:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от _-Re@l-_
Есть читерский способ - отсортировать массив по убыванию и взять первые два числа.
да ни в коем разе!
точнее - не в данном случае. Автор темы же ясно сказал, что задача учебная. и дана ещё до того, как обучающийся освоил массивы. Поэтому массивы (и другие более сложные структуры, разумеется) использовать НЕЛЬЗЯ.

Цитата:
Сообщение от onewho
а что отрицательных чисел быть не может ?
Это Вы в точку попали.

хочу заметить, что автор не привёл полный текст исходной задачи...
поэтому, возможно, в условии задачи ограничен диапазон/тип допустимых чисел..
если же это не так, то самый простой способов исправить уже написанных код - это добавить в него проверку на counter

я бы не побоялся увеличения/дублирования кода и сделал просто ещё одну проверку сразу после ввода числа:
Код:
 cin >> number;
 Если counter == 0 - тогда largest = number;
 Если counter == 1 - тогда  
   if ( number >= largest )
        {
           largest2 = largest;
           largest = number;
        }
        else 
           largest2 = number;
 Если counter > 1
    <тут ваш код сравнения...Number largest largest2 >
p.s. в этом случае начальное присвоение largest = 0; largest2 = 0; можно убрать, ибо к переменным обращения ДО того, как они будут присвоены НЕ БУДЕТ.
Впрочем, можно и оставить - это присвоение нулю в данном случае ни на что не повлияет!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.08.2011, 17:31   #5
Porcupine
 
Аватар для Porcupine
 
Регистрация: 21.06.2011
Сообщений: 5
По умолчанию

Благодарю за подробные ответы.
С отрицательными числами еще не встречался.
Porcupine вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нахождение мин и макс числа Данил1986 Паскаль, Turbo Pascal, PascalABC.NET 3 07.06.2010 05:46
Задача:Найти максимальное из цифр четырехзначного числа Obender13 Помощь студентам 1 07.11.2009 08:07
работа с массивами в С++ (нахождение мин и макс числа) Lorden Помощь студентам 10 29.01.2009 21:42