6 / 0 / 0
Регистрация: 30.06.2012
Сообщений: 3
1

Оператор for,if ( найти два наибольших числа)

30.06.2012, 19:19. Показов 2124. Ответов 5
Метки нет (Все метки)

Подскажите пожайлуста....начал самостоятельно изучать С++, в основном по Дейтелу Х.М. но и видеуроки итд...
но вот в книге Дейтела есть в конце глав задачки...зациклился на одной не идет и все,,,
тут на форуме посмотрел не нашел ничего похожего...вообщем задачка...найти два набольших числа...из 10 чисел .
..но для простоты я беру пока 5, хотя разници большой нет...одно наибольшее нахожу а вот второе ну никак(
вот программа на одно наибольшое...тут бы добавить....но не идет и все (
Условие : числа вводяться только один раз.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include 
using namespace std;
 
int main ()
 
{
setlocale(LC_CTYPE,"Russian");
int x,i,max;
max=0;
 
for (i=0;i<5;i++)
{
cout << "Введите числа ";
cin >> x;
 
if ( max < x )
max=x;
 
cout << "Максимальное " << max << endl;
}
return 0;
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.06.2012, 19:19
Ответы с готовыми решениями:

Найти два наибольших числа в последовательности
1)Дана последовательность из М чисел. Найти в ней два наибольших числа.

Найти два наибольших числа из десяти
С одним числом написал, а вот чтобы найти два числа ума не хватает. Нужно использовать только одну...

Найти два наибольших простых числа в матрице
Помогите,пожалуйста Задана матрица целых чисел A(m,n). Найти два наибольших простых числа....

Даны четыре разных числа. Найти среди них два наибольших
Даны четыре разных числа. Найти среди них два наибольших. Чет я не понимаю как это все написать...

5
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
30.06.2012, 19:25 2
C++
1
max=0;
При вводе отрицательных чисел неверно.
Если без массива, то нужно заводить переменную bool, которая менялась бы, когда мы устанавливали максимум (при вводе первого числа).
Мой тебе совет - используй массив.
Т.е.
C++
1
2
3
int array[10];
for (int i=0; i < 10; i++)
    cin>> array[i];
Дальше работай с ним так: первым обходом находишь максимум, вторым обходом просто в проверке ставишь if(array[i] > max2 && array[i] != max). Потом можешь посидеть и подумать, как уменьшить количество лишних итераций (узнавать первый максимум в цикле ввода).
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
33063 / 18418 / 3870
Регистрация: 12.02.2012
Сообщений: 30,958
Записей в блоге: 12
30.06.2012, 19:33 3
Вот решение:

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
#include "iostream.h"
 
int main(int argc, char* argv[])
{
 
    int X[5],max_1,max_2,i,j;
 
    for (i=0; i < 5; i++)
    {
        cout << (i+1) << " - number: ";
        cin >> X[i];
    }
 
    max_1=X[0];
    max_2=X[1];
 
    for (i=0; i < 5; i++)
        if (X[i] > max_1) 
            max_1=X[i];
        else
            if (X[i] > max_2) max_2=X[i];
            
    cout << "max_1=" << max_1 << endl;
    cout << "max_2=" << max_2 << endl;
 
    return 0;
}
0
6 / 0 / 0
Регистрация: 30.06.2012
Сообщений: 3
01.07.2012, 12:47  [ТС] 4
Спасибо, но как раз я до изучения массивов и не дошел пока ) работаю с числами)....но если взять программму написанную тут для массива ...она не правильно работает ...теже ошибки что и у меня теряються некоторые числа....я нашел решение...мож у кого будет таже проблема ( в первом операторе if нада присваивать max2=max, тогда при следущем цикле при max< x; max2 получит переменную max, а дальше понятно :

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
#include <iostream>
using namespace std;
 
int  main () // Нахождение двух наибольших чисел
 
{
                    setlocale(LC_CTYPE,"Russian");
   int x,i,max,max2;
 
   max=max2=0;
  
   for (i=0;i<5;i++)
   {
    cout << "Введите числа   ";
    cin >> x;
    
       if ( max < x )
           {
                        max2=max;
               max=x;
           }
       else
       {
           if ((max2<x)&&(max!=x)) // (x>max) так два наибольших могут быть равны
           max2=x;
       }
    
      
       cout << "Максимальное  " << max << endl;
       cout << "Максимальное2  " << max2 << endl;
   }
 
  
   return 0;
}
0
104 / 98 / 40
Регистрация: 01.07.2012
Сообщений: 277
01.07.2012, 13:40 5
Вот как вариант с массивом, просто сортируем пузыриком и выводим первые два элемента

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <conio.h>
using namespace std;
 
void main()
{
    setlocale(LC_ALL,"Rus");
    int i,j,tmp,x[10];
    for (i=0;i<10;i++)
    {
        cout<<"Введите x["<<i+1<<"]\t";
        cin>>x[i];
    }
    for(i=1;i<10;i++)
        for(j=9;j>=i; j--)
            if(x[j-1]<x[j])
            { tmp=x[j-1]; x[j-1]=x[j]; x[j]=tmp; }
    cout<<"Максимальное 1 "<<x[0];
    cout<<"\nМаксимальное 2 "<<x[1];
    getch();
}
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
33063 / 18418 / 3870
Регистрация: 12.02.2012
Сообщений: 30,958
Записей в блоге: 12
01.07.2012, 21:43 6
Строго говоря, мое решение правильно. В постановке не сказано: два различных числа.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2012, 21:43
Помогаю со студенческими работами здесь

Даны четыре разных числа. Найти среди них два наибольших
Задача: Даны четыре разных числа. Найти среди них два наибольших. С применением if. Помогите...

Найти два наибольших числа из всех введенных, при условии что цифры не повторяются
Вот сижу над очередной задачкой. Найти 2 наиболее высоких числа из 10 введенных, при условии что...

Найти два наибольших числа из четырёх используя if
Составить программу нахождения двух наибольших из четырёх чисел и вывести их в порядке...

Ввести N чисел с клавиатуры. Найти два наибольших числа
Здравствуйте. Я не давно начал работать с C#, мне попалась задачка и у меня возникли с ней...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru