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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2014, 23:58   #1
Liberum34
Новичок
Джуниор
 
Регистрация: 03.08.2014
Сообщений: 2
По умолчанию Помощь с кодом

Недавно начал изучать С++(самостоятельно),немного перешел к практике,и вот столкнулся с задачей,которая вроде простая,но сбила меня столку и ввела в ступор на несколько дней:
Найдите два наибольших значения из 10 чисел. Указание: вы можете ввести каждое число только один раз.

Код:
#include <iostream>
 
using namespace std;
 
int main()
{
int counter;

float number, largest, largest2;
 
cout << "Inter: ";
cin >> largest;
cout << "Inter: ";
cin >> largest2;
 
if (largest < largest2)
{
float tmp;
tmp = largest;
largest = largest2;
largest2 = tmp;
}
 
for (counter = 1; counter <= 8; counter++)
{
cout << "Inter: ";
cin >> number;
 
if (number > largest)
{
largest2 = largest;
largest = number;
}
else if (number > largest2)
largest2 = number;
}
 
cout << endl << "Max1: " << largest << endl;
cout << endl << "Max2: " << largest2 << endl;
 
return 0;
}
Код хоть и написал,но сам процесс мне не понятен,поэтому будьте добры, напишите псевдокод к программе и объясните каждую строчку по возможности.Заранее благодарю.

Последний раз редактировалось Stilet; 04.08.2014 в 08:07.
Liberum34 вне форума Ответить с цитированием
Старый 04.08.2014, 08:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не нравится мне твой код, предлагаю свой:
Код:
#include <iostream>

using namespace std;

int main()
{
    //Заводим переменки. Две из них даем минимальные значения
    int i=0,l,x=-99999,y=x;
    // В цикле
    for(i=0;i<10;i++){
        //Вводим число
        cin>>l;
        //Если оно больше первого
        //Смещаем первое число во второе
        //А первому присваиваем это число
        if(x<l){y=x;x=l;}
    }
    //Потом выводим оба числа
    cout << x<<'\t'<<y<< endl;
    cin.get();
    return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.08.2014, 09:26   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

А меня всегда поражали такие люди - "я код написал ("мамой клянусь", наверное), но что он делает и вообще что там написано я не знаю, объясните мне..."
p51x вне форума Ответить с цитированием
Старый 04.08.2014, 09:50   #4
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

p51x согласен.... Действительно, чудеса. Может он его под общим наркозом писал, по-этому и не знает как он работает.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 04.08.2014, 10:06   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может он его под общим наркозом писал, по-этому и не знает как он работает.
А я тоже не понял как его код работает... Пытался разобраться, но что-то запутался, потому и решил свой вариант привести.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.08.2014, 20:40   #6
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
А я тоже не понял как его код работает... Пытался разобраться, но что-то запутался, потому и решил свой вариант привести.
Ну он вводит 10 чисел. первых 2 вводит отдельно (a, b назовем) и сразу сортирует их (a < b).

Затем вводит остальные и ... (в его код не вчитывался, но экстресенсирую):
если c[i] < a - ничего делать не надо
если c[i] > b - то a = b, b = c[i]
если c[i] > a и c[i] < b - то a = c[i]

Ну вроде это логично. А что там он написал, не знаю, неприятно код оформлен и названия переменных какие-то плохие. Запутывают.
rrrFer вне форума Ответить с цитированием
Старый 04.08.2014, 20:41   #7
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Можно мой вариант....
На Java
Код:
import java.util.Scanner;

class Max {
    public static final int N = 10;

    public static void main(String [] args) {
        Scanner in = new Scanner(System.in);

        System.out.print("Введите число №1: ");
        int oneMax = in.nextInt();              // Ввод первого числа

        System.out.print("Введите число №2: ");
        int twoMax = in.nextInt();              // Ввод второго числа

        for(int i = 0; i < N; i++) {
            System.out.print(" " + (i + 1) + " = ");
            int number = in.nextInt();          // Ввод 10-ти чисел

            /* Если введенное число больше 1-го, а 1-е больше 2-го, то */
            if(number > oneMax && oneMax > twoMax) {
                twoMax = oneMax;                // происходит смещение (введенное число -> 1-е -> 2-е)
                oneMax = number;
            }

            /* Если введенное число больше 2-го, а 2-е больше 1-го, то */
            if(number > twoMax && twoMax > oneMax) {
                oneMax = twoMax;                // смещение (введенное число -> 2-е -> 1-е)
                twoMax = number;
            }
        }

        System.out.println("Максимальное число 1: " + oneMax);
        System.out.println("Максимальное число 2: " + twoMax);
    }
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума Ответить с цитированием
Старый 04.08.2014, 23:26   #8
Liberum34
Новичок
Джуниор
 
Регистрация: 03.08.2014
Сообщений: 2
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
А меня всегда поражали такие люди - "я код написал ("мамой клянусь", наверное), но что он делает и вообще что там написано я не знаю, объясните мне..."
К задаче прилагалось решение(я и не говорил,что это свой код),и мне лишь хотелось его понять.
Liberum34 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь с кодом screammassacre Общие вопросы C/C++ 4 02.12.2013 15:51
Помощь с кодом. -=Virus=- Помощь студентам 7 24.12.2009 07:38
Небольшая помощь с кодом Z_Igorok Общие вопросы C/C++ 2 04.11.2009 01:30
Нужна помощь с кодом игры. игра на Blitz Basic 3D Guerrilla Помощь студентам 0 05.07.2009 16:20
Нужна помощь с кодом Мучитель excel Microsoft Office Excel 3 05.08.2008 21:40