Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
Difi
3 / 3 / 0
Регистрация: 04.06.2018
Сообщений: 22
1

Напишите программу, которая считывает 5 целых чисел, а затем определяет наименьшее и наибольшее значение

08.06.2018, 09:19. Просмотров 844. Ответов 16
Метки нет (Все метки)

Напишите программу, которая считывает 5 целых чисел, а затем определяет наименьшее и наибольшее значение.
Не знаю почему, но данная тема мне очень сложно дается(( подскажите почему она у меня криво работает и может сможете посоветовать как освоить ее лучше и понимать.

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
#include <stdio.h>
 
int main(void)
{
    int num1, num2, num3, num4, num5, largest, smallest;
    printf("Enter fave integer:\n");
    scanf_s("%d%d%d%d%d", &num1, &num2, &num3, &num4, &num5);
 
    if (num1 > num2) {
        largest = num1;
        smallest = num2;
        if (largest < num3) {
            largest = num3;
            if (largest < num4) {
                largest = num4;
                if (largest < num5) {
                    largest = num5;
                }
            }
        }
    }
    if (num1 < num2) {
        smallest = num1;
        largest = num2;
        if (largest < num3) {
            largest = num3;
            if (largest < num4) {
                largest = num4;
                if (largest < num5) {
                    largest = num5;
                }
            }
        }
    }
    printf("Largest = %d\n", largest);
    printf("Smallest = %d\n", smallest);
 
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2018, 09:19
Ответы с готовыми решениями:

Напишите программу, которая считывает символы из файла строка за строкой vstup.txt
Помогите пожалуйста написать программу.. :cry: &quot;Напишите программу, которая...

Напишите программу, которая считывает с клавиатуры три числа, разделенных пробелами и печатает их сумму
Помогите пожалуйста записать эту программу...:help: &quot;Напишите программу,...

Напишите функцию, которая возвращает наименьшее из трех чисел с плавающей точкой
Всем привет, не могу найти ошибку, помогите пожалуйста. #include &lt;stdio.h&gt;...

Напишите программу, которая сравнивает дни рождения двух человек и определяет кто их них старше
Напишите программу,которая сравнивает дни рождения 2-х человек и определяет кто...

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

16
_SayHello
614 / 362 / 113
Регистрация: 30.07.2015
Сообщений: 1,279
08.06.2018, 10:05 2
Difi,
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main(void)
{
    int num[5];
    for(int i = 0; i < 5; i++)
    {
        printf("Enter integer #%d: ", i+1);
        scanf("%d", &num[i]);
    }
    int max = num[0];
    int min = num[0];
    for(int i = 1; i < 5; i++)
    {
        if(num[i] > max)
            max = num[i];      
        if(num[i] < min)
            min = num[i];            
    }
    printf("Largest = %d\n", max);
    printf("Smallest = %d\n", min);
    
 
    return 0;
}
1
Difi
3 / 3 / 0
Регистрация: 04.06.2018
Сообщений: 22
08.06.2018, 10:11  [ТС] 3
Спасибо))Но я тут ничего не понимаю еще))) я прошел только if, операцию присвоения и математические операции + - * /.
Если можно подскажи просто как сделать это только с if)))
0
_SayHello
614 / 362 / 113
Регистрация: 30.07.2015
Сообщений: 1,279
08.06.2018, 10:33 4
Лучший ответ Сообщение было отмечено Difi как решение

Решение

Difi,
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
int main(void)
{
    int num1, num2, num3, num4, num5, largest, smallest;
    printf("Enter fave integer:\n");
    scanf_s("%d%d%d%d%d", &num1, &num2, &num3, &num4, &num5);
 
    smallest = num1;
    largest = num1;
    
    if (num2 < smallest) 
        smallest = num2;
    if (num3 < smallest) 
        smallest = num3;    
    if (num4 < smallest) 
        smallest = num4;
    if (num5 < smallest) 
        smallest = num5;  
    
    if (num2 > largest) 
        largest = num2;
    if (num3 > smallest) 
        largest = num3;    
    if (num4 > smallest) 
        largest = num4;
    if (num5 > smallest) 
        largest = num5;  
     
   
    printf("Largest = %d\n", largest);
    printf("Smallest = %d\n", smallest);
 
    return 0;
}
1
SlavaSokolov
170 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 735
08.06.2018, 10:49 5
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
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
int main()
{
    int number;
    scanf("%d", &number);
 
    int max = number, min = number;
 
    for (int i = 0; i < 4; i++)
    {
        scanf("%d", &number);
        if (number > max)
            max = number;
        if (number < min)
            min = number;
    }
 
    printf("Max: %d\nMin: %d\n", max, min);
 
    system("pause");
    return 0;
}
1
Difi
3 / 3 / 0
Регистрация: 04.06.2018
Сообщений: 22
08.06.2018, 10:52  [ТС] 6
Криво работает((
0
Миниатюры
Напишите программу, которая считывает 5 целых чисел, а затем определяет наименьшее и наибольшее значение  
_SayHello
614 / 362 / 113
Регистрация: 30.07.2015
Сообщений: 1,279
08.06.2018, 11:00 7
Лучший ответ Сообщение было отмечено Difi как решение

Решение

Difi,Пардон, опечатался
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
 int main(void)
{
    int num1, num2, num3, num4, num5, largest, smallest;
    printf("Enter fave integer:\n");
    scanf_s("%d%d%d%d%d", &num1, &num2, &num3, &num4, &num5);
 
    smallest = num1;
    largest = num1;
    
    if (num2 < smallest) 
        smallest = num2;
    if (num3 < smallest) 
        smallest = num3;    
    if (num4 < smallest) 
        smallest = num4;
    if (num5 < smallest) 
        smallest = num5;  
    
    if (num2 > largest) 
        largest = num2;
    if (num3 >  largest) 
        largest = num3;    
    if (num4 >  largest) 
        largest = num4;
    if (num5 >  largest) 
        largest = num5;  
     
   
    printf("Largest = %d\n", largest);
    printf("Smallest = %d\n", smallest);
 
    return 0;
}
1
Difi
3 / 3 / 0
Регистрация: 04.06.2018
Сообщений: 22
08.06.2018, 11:33  [ТС] 8
А мой код почему неверно показывает результат? Вам огромное спасибо, я разобрался в вашем коде и понял. Но вот смотрю на свой и не могу найти ошибку, хотя если так подумать, там построение верное, но есть где-то ошибка. Не могли бы подсказать где она?
0
_SayHello
614 / 362 / 113
Регистрация: 30.07.2015
Сообщений: 1,279
08.06.2018, 11:38 9
Лучший ответ Сообщение было отмечено Difi как решение

Решение

Difi,
Потому что у вас условие внутри условия. И если первое не выполнится остальные условия тоже выполняться не будут.
1
Difi
3 / 3 / 0
Регистрация: 04.06.2018
Сообщений: 22
08.06.2018, 11:40  [ТС] 10
Вы имеете ввиду тело функции if {}?
Я думал что фигурная скобка при написании if нужна всегда.
0
_SayHello
614 / 362 / 113
Регистрация: 30.07.2015
Сообщений: 1,279
08.06.2018, 11:52 11
Difi, нет
вы пишите так
C
1
2
3
4
5
6
7
if(...)
{
     if(...)
     {
          ....
     }
}
Так вот, если у вас верхнее условие не выполнится, то остальные условия тоже выполняться не будут и остальные числа не проверятся.

Скобки в if нужны, однако если внутри if только одна операция то можно их не ставить.

запись
C
1
2
if(....)
    dosmth;
эквивалентна
C
1
2
3
4
if(....)
{
    dosmth;
}
Однако так как ниже, делать нельзя иначе dosmth2; не попадает в блок условия и будет выполняться всегда.
C
1
2
3
if(....)
   dosmth1;
   dosmth2;
надо так
C
1
2
3
4
5
if(....)
{
    dosmth1;
    dosmth2;
}
1
Difi
3 / 3 / 0
Регистрация: 04.06.2018
Сообщений: 22
08.06.2018, 11:57  [ТС] 12
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
#include <stdio.h>
 
int main(void)
{
    int num1, num2, num3, num4, num5, largest, smallest;
    printf("Enter fave integer:\n");
    scanf_s("%d%d%d%d%d", &num1, &num2, &num3, &num4, &num5);
 
    if (num1 > num2) {
        largest = num1;
        smallest = num2;
        if (largest < num3)
            largest = num3;
        if (largest < num4)
            largest = num4;
        if (largest < num5)
            largest = num5;
    }
                if (num1 < num2) {
                    smallest = num1;
                    largest = num2;
                    if (largest < num3)
                        largest = num3;
                    if (largest < num4)
                        largest = num4;
                    if (largest < num5)
                        largest = num5;
                }
    printf("Largest = %d\n", largest);
    printf("Smallest = %d\n", smallest);
 
    return 0;
}
Вот я чуток редактировал свой код,но он не срабатывает. Когда ввожу 1.2.3.4.5 программа работает корректно, а если иду наоборот 5.4.3.2.1 то ерунду мелит. Помогите найти у меня ошибку.
0
SlavaSokolov
170 / 134 / 105
Регистрация: 14.04.2016
Сообщений: 735
08.06.2018, 12:00 13
Цитата Сообщение от Difi Посмотреть сообщение
if (num1 < num2) {
C
1
2
else {
}
И дальше у вас в любом случае определяется только наибольшее.
1
Difi
3 / 3 / 0
Регистрация: 04.06.2018
Сообщений: 22
08.06.2018, 12:03  [ТС] 14
else я еще не прошел))) В книге Дейтел это в третей главе начинается, а я на второй главе)но я вроде как условие else
0
_SayHello
614 / 362 / 113
Регистрация: 30.07.2015
Сообщений: 1,279
08.06.2018, 12:08 15
Difi,
Пройдите свою программу по шагам и поймите что у вас происходит, и что вы хотите сделать.


что хотим сделать? Найти максимальное и минимальное.
Как находится максимальное? Принимаем первое число максимальным и сравниваем со вторым, если второе больше, то второе становится максимальным и дальше сравниваем с третьим и так далее.

Что вы делаете
C
1
2
3
4
5
6
7
8
9
10
11
if (num1 > num2)  // тут вы сравниваете первые два числа Если первое больше 
{
        largest = num1; // то максимальное первое число 
        smallest = num2; // а второе минимальное
        if (largest < num3)
            largest = num3;
        if (largest < num4)
            largest = num4;
        if (largest < num5)
            largest = num5;
}
Однако что будет если числа введут таким образом что num1 < num2? внешнее условие не выполнится, и вот этот кусок кода не выполнится вообще
C
1
2
3
4
5
6
7
8
        largest = num1; // то максимальное первое число 
        smallest = num2; // а второе минимальное
        if (largest < num3)
            largest = num3;
        if (largest < num4)
            largest = num4;
        if (largest < num5)
            largest = num5;
поэтому надо так
C
1
2
3
4
5
6
7
8
9
    largest = num1; // приняли первое максимальным
    if (num2 > largest)  //второе число больше максимального, если да 
        largest = num2;  // то второе максимальное
    if (num3 >  largest)  // Третье число больше максимального, если да
        largest = num3;    // то третье максимальное и так далее
    if (num4 >  largest) 
        largest = num4;
    if (num5 >  largest) 
        largest = num5;
1
Difi
3 / 3 / 0
Регистрация: 04.06.2018
Сообщений: 22
08.06.2018, 12:35  [ТС] 16
Окей. Это мысль ясна и мне была, но я даже не догадался вот также наглядно написать себе подсказки , которые упрощают визуальное восприятие) Спасибо! Вы мой спаситель! Разевали! Модераторы))))плюсик ему плиз)

Добавлено через 23 минуты
Сейчас столкнулся с ошибкой такой "Run-Time Check Failure #3 - The variable "smallest" is being user without being initialized" и такая же ошибка с largest если я порядок цифр меняю. Понял что говорят, но ведь переменная объявлена в int.

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
#include <stdio.h>
 
int main(void)
{
    int num1, num2, num3, num4, num5, largest, smallest;
    printf("Enter fave integer:\n");
    scanf_s("%d%d%d%d%d", &num1, &num2, &num3, &num4, &num5);
 
 
    if (num1 > num2) {
        largest = num1;
        if (largest < num3) {
            largest = num3;
            if (largest < num4) {
                largest = num4;
                if (largest < num5) {
                    largest = num5;
                }
            }
        }
    }
    if (num1 < num2) {
        smallest = num1;
        if (smallest < num3) {
            smallest = num3;
            if (smallest < num4) {
                smallest = num4;
                if (smallest < num5) {
                    smallest = num5;
                }
            }
        }
    }
    printf("Largest = %d\n", largest);
    printf("Smallest = %d\n", smallest);
 
    return 0;
}
0
_SayHello
614 / 362 / 113
Регистрация: 30.07.2015
Сообщений: 1,279
08.06.2018, 12:42 17
Difi, я все понять не могу, мы читаете то что я пишу или нет?) Зачем вы упорно if ы вкладывает друг в друга?
Вот и случилось о том что я говорил
C
1
2
3
4
5
6
7
8
9
10
11
12
    if (num1 < num2) { // это условие не выполнилось
        smallest = num1; // соответственно эта переменная не инициализировалась
        if (smallest < num3) {
            smallest = num3;
            if (smallest < num4) {
                smallest = num4;
                if (smallest < num5) {
                    smallest = num5;
                }
            }
        }
    }
А тут вы пытаетесь вывести неинициализированную переменную и получаете ошибку.
C
1
  printf("Smallest = %d\n", smallest);
Может так понятнее будет
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
   smallest = num1;
    largest = num1;
     if(num2 < smallest)
    {
        smallest = num2;        
    }        
    if (num3 < smallest) 
    {
        smallest = num3;        
    }
    if (num4 < smallest) 
    {
        smallest = num4;        
    }
    if (num5 < smallest)
    {
        smallest = num5;        
    }        
  
    
    if (num2 > largest) 
    {
        largest = num2;        
    }
    if (num3 >  largest)
    {
         largest = num3;        
    }        
    if (num4 >  largest)
    {
        largest = num4;        
    }        
    if (num5 >  largest) 
    {    
        largest = num5;          
    }
А теперь сравните со своим
1
08.06.2018, 12:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2018, 12:42

Написать функцию, которая определяет количество положительных элементов массива целых чисел
Написать функцию, которая определяет количество положительных элементов массива...

Дано 10 целых чисел, определить сколько из них имеют наибольшее значение
#include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt;...

Напишите программу, которая оценивает значение математической константы e по формуле
/* Напишите программу, которая оценивает значение математической константы...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru