Нахождение двух наибольших чисел из десяти введённых - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Найдите из 10 чисел два наибольших значения.
#include <stdio.h>
#include <conio.h>
 
int main ()
{
int i,number, largestone, largesttwo;
i=1;
number=0;
while (i<=10)
{

printf ("Vvedite chislo\n");
scanf ("%d", &number);
if (i==1)
{
largestone=number;
largesttwo=number;
printf ("Largestone equals %d, Largesttwo ne vvedeno \n", largestone);
}
if (i==2)
{
    if (number>largestone)
{   largesttwo=largestone;
    largestone=number;
    printf ("Largestone %d, Largesttwo %d\n", largestone, largesttwo);
}
else
   if (number=largestone)
{ largesttwo=number;
    printf ("Largestone %d, Largesttwo %d\n", largestone, largesttwo);
}
else
 if (number<largestone)
{
    largesttwo=number;
printf ("Largestone %d, Largesttwo %d\n", largestone, largesttwo);
}
}
 
if (i>=3)
{
    if (number>largestone)
    {
  largesttwo=largestone;
  largestone=number;
  printf ("Largestone %d, Largesttwo %d\n", largestone, largesttwo);
    }
    if (number=largestone)
    {
largesttwo=number;
printf ("Largestone %d equals Largesttwo %d\n", largestone, largesttwo);
    }
    if (number<largestone)
{
    if (number>largesttwo)
    {
    largesttwo=number;
    printf ("Largestone %d, Largesttwo %d\n", largestone, largesttwo);
    }
    if (number=largesttwo)
    {
    printf ("Largestone %d, Largesttwo %d\n", largestone, largesttwo);
    }
    if (number<largesttwo)
    {
    printf ("Largestone %d, Largesttwo %d\n", largestone, largesttwo);
    }
}
 
}
 
i++;
}
 
getch ();
return 0;
}
По логике вроде всё сделал правильно. Единственное что, мои условия некоторые игнорируются и выбираются те, которые стоят выше. например if () { if () {}

else { if }

} То что, жирным - не выполняется, а выполняется лишь верхнее. Прошу помощи

Решение задачи: «Нахождение двух наибольших чисел из десяти введённых»

textual
Листинг программы
#include <iostream>
#include <vector>
#include <algorithm>
 
const int NUMBER_OF_DIGITS = 10;
 
int main()
{
    std::vector<int> v;
    int x, count = 0;
    while(count++ < NUMBER_OF_DIGITS && std::cin >> x) v.push_back(x);
    std::sort(v.begin(), v.end());
    std::cout << v[NUMBER_OF_DIGITS-1] << ' ' << v[NUMBER_OF_DIGITS-2] << std:: endl ;
    system("pause");
    return 0;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы с векторами и алгоритмами
  2. Объявление константы, определяющей количество вводимых чисел (10)
  3. Создание пустого вектора для хранения введенных чисел
  4. Объявление переменной для подсчета количества введенных чисел и инициализация ее значением 0
  5. Организация цикла, который будет выполняться до тех пор, пока не будет введено 10 чисел или пока не будет введено число, которое не может быть обработано как число
  6. Добавление каждого введенного числа в вектор
  7. Сортировка вектора в порядке возрастания
  8. Вывод на экран двух наибольших чисел из вектора
  9. Ожидание нажатия клавиши для завершения работы программы
  10. Возврат значения 0, что означает успешное завершение работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы