Форум программистов, компьютерный форум CyberForum.ru

Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера - C++

Восстановить пароль Регистрация
 
ghjas
2 / 2 / 0
Регистрация: 19.11.2009
Сообщений: 66
16.10.2011, 17:30     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #1
есть 10 чисел вводимых с клавиатуры. найти два крупнейших числа и их номера.
C++
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
int  poz1, poz2, max1,max2;//
using namespace std;
    cout<<"vvedit 10 chusel: \n";
    max1=max2=0;
    cin >> b;
        if(b>max1) {max1 = b; poz1=1; poz2=2;}
        cin >> c;
        if(c>max1) {max2 = max1; max1 = c; poz2=2; poz1=1;}
        cin >> d;
        if(d>max1) {max2 = max1; max1 = d; poz2=3; poz1=2;}
        cin >> e;
        if(e>max1) {max2 = max1; max1 = e; poz2=4; poz1=3;}
        cin >> f;
        if(f>max1) {max2 = max1; max1 = f; poz2=5; poz1=4;}
        cin >> g;
        if(g>max1) {max2 = max1; max1 = g; poz2=6; poz1=5;}
        cin >> h;
        if(h>max1) {max2 = max1; max1 = h; poz2=7; poz1=6;}
        cin >> i;
        if(i>max1) {max2 = max1; max1 = i; poz2=8;poz1=7;}
        cin >> j;
        if(j>max1) {max2 = max1; max1 = j; poz2=9;poz1=8;}
        cin >> k;
        if(k>max1) {max2 = max1; max1 = k; poz2=10;poz1=9;}
cout << "MAX2 is : " << max1 << "\nMAX1 is :" << max2<<"\n";
cout<<"nomer max1 is:"<<poz1<<"\n"<<"nomer max2 is:"<<poz2;
_getch();   
return 0;
может как-то по другому можно разрешить, но без использования цикла.

 Комментарий модератора 
Один вопрос - одна тема!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2011, 17:30     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера
Посмотрите здесь:

Написать программу, которая вводит с клавиатуры два натуральных числа и выполняет логическое умножение и сложение этих чисел C++
C++ Дано целое число N и набор из N целых чисел. Определить номера тех чисел наборе, которые меньше своего правого соседа, и количество К таких чисел.
Найти сумму двух вводимых с клавиатуры вещественных чисел C++
С++. В данном массиве с n целых чисел найти среднее арифметическое n / 2 крупнейших элементов C++
C++ Из 10 чисел вводимых из клавиатуры, найти 2 максимальных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
16.10.2011, 17:45     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #2
Цитата Сообщение от ghjas Посмотреть сообщение
может как-то по другому можно разрешить, но без использования цикла.
А почему без использования цикла или это вам так хочется?
Цитата Сообщение от ghjas Посмотреть сообщение
C++
1
max1=max2=0;
А если все числа отрицательные и их нужно сравнивать. Обычно в таких случаях присваивают значения первых элементов списка. В коде ещё непонятные символы b и c нигде не объявленные.
ghjas
2 / 2 / 0
Регистрация: 19.11.2009
Сообщений: 66
16.10.2011, 17:48  [ТС]     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #3
задание такое. без цикла из 10 чисел которые ввели с клавиатуры выбрать 2 наиболее крупные и указать их позиции.

мой код работает но не во всех случаях.
надо доделать или переделать
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.10.2011, 17:59     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #4
ghjas, сделай через рекурсию
ghjas
2 / 2 / 0
Регистрация: 19.11.2009
Сообщений: 66
16.10.2011, 18:01  [ТС]     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #5
ето как?
мы еще не учили такого
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.10.2011, 18:04     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #6
Цитата Сообщение от ghjas Посмотреть сообщение
ето как?
http://en.wikipedia.org/wiki/Recursion, http://en.wikipedia.org/wiki/Recursi...puter_science)
Цитата Сообщение от ghjas Посмотреть сообщение
мы еще не учили такого
как по мне, тебе выпал отличный шанс узнать что-то новое
ghjas
2 / 2 / 0
Регистрация: 19.11.2009
Сообщений: 66
16.10.2011, 18:07  [ТС]     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #7
да если бы время было. на завтра сдать надо
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.10.2011, 18:08     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #8
ghjas, а обычные функции вы уже проходили?
ghjas
2 / 2 / 0
Регистрация: 19.11.2009
Сообщений: 66
16.10.2011, 18:12  [ТС]     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #9
еще нет
Nameless One
Эксперт С++
 Аватар для Nameless One
5754 / 3403 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
16.10.2011, 18:23     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #10
Вот через рекурсию, выглядит топорно, но пока ничего лучше в голову не пришло:
C
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <stdio.h>
#include <stdlib.h>
 
struct search_result
{
    int first, second;
    size_t n_first, n_second;
};
 
void search_two_max(struct search_result*, size_t, size_t);
 
int main()
{
    struct search_result mm;
 
    int a, b;
    size_t i = 1;
        
    puts("Input 10 numbers");
 
    printf("%02u> ", i++);
    scanf("%d", &a);
    printf("%02u> ", i++);
    scanf("%d", &b);
 
    if(a > b)
    {
    mm.first = a;
    mm.n_first = 1;
    mm.second = b;
    mm.n_second = 2;
    }
    else
    {
    mm.first = b;
    mm.n_first = 2;
    mm.second = a;
    mm.n_second = 1;
    }
 
    search_two_max(&mm, i, 10);
 
    printf("The first max number is %d (#%u), the second one is %d (#%u)\n",
       mm.first, mm.n_first, mm.second, mm.n_second);
    
    exit(0);
}
 
void search_two_max(struct search_result* mm, size_t curr, size_t last)
{
    int num;
    
    if(curr > last)
    return;
 
    printf("%02u> ", curr);
    scanf("%d", &num);
 
    if(num > mm->first)
    {
    mm->second = mm->first;
    mm->n_second = mm->n_first;
    mm->first = num;
    mm->n_first = curr;
    }
    else if(num > mm->second)
    {
    mm->second = num;
    mm->second = curr;
    }
    
    search_two_max(mm, curr + 1, last);
}
ghjas
2 / 2 / 0
Регистрация: 19.11.2009
Сообщений: 66
16.10.2011, 18:33  [ТС]     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #11
буду разбираться, может и такое подойдет.
а если нет, то будет 2
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
16.10.2011, 20:07     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #12
Цитата Сообщение от ghjas Посмотреть сообщение
мы еще не учили такого
А оператор goto? )
ghjas
2 / 2 / 0
Регистрация: 19.11.2009
Сообщений: 66
16.10.2011, 21:53  [ТС]     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #13
так, учили. я пробовал сымитировать цикл, но не получилось.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.10.2011, 23:04     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера
Еще ссылки по теме:

Дано двумерный массив целых чисел. Найти номера строк, в которых есть только один непарный элемент C++
C++ С клавиатуры вводится два числа. Найти произведение цифр этих чисел
C++ Сравнение чисел вводимых с клавиатуры

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
16.10.2011, 23:04     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера #14
Вариант с goto
C++
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
 
int main()
{      
   int max1, max2;
   std::cin >> max1 >> max2;
 
   int pos1 = 1, pos2 = 2;
   
   if(max1 < max2)
   {
      int t = max1;
      max1 = max2;
      max2 = t;
 
      pos1 = 2;     
      pos2 = 1;
   }         
 
   int i = 3;
   int val;
 
start_loop:
   std::cin >> val;
   if(max1 < val)
   {
      max2 = max1;
      pos2 = pos1;
 
      max1 = val;
      pos1 = i;
   }  
   else if(max2 < val)
   {
      max2 = val;
      pos2 = i;
   }
   if(i++ < 10) goto start_loop;
 
   std::cout << "max1: " << max1 
         << "\nposition: " << pos1 << "\n\n"
             << "max2: " << max2
         << "\nposition: " << pos2 << "\n";
   return 0;
}
Yandex
Объявления
16.10.2011, 23:04     Дано 10 чисел, вводимых с клавиатуры. найти два крупнейших числа и их номера
Ответ Создать тему
Опции темы

Текущее время: 08:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru