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

Даны два числа. Вывести вначале большее, а затем меньшее из них

08.02.2018, 06:12. Показов 10187. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны два числа. Вывести вначале большее, а затем меньшее из них.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.02.2018, 06:12
Ответы с готовыми решениями:

Даны два числа Вывести вначале большее, а затем меньше из них
Даны два числа Вывести вначале большее, а затем меньше из них

Вывести вначале большее, а затем меньшее из двух чисел
Даны два числа. Вывести вначале большее, а затем меньшее из них Assembler

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

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

20
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 06:42 2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
main()
{
 
   float num[2];
   int i;
 
     for(i=0; i<2; i++)
    {
        printf("Input %d number", i);
        scanf("%f", num[i]);
 
    }
     printf("----------------------------------\n");
     
       if(num[0]>num[1]) printf("%f, %f", num[1], num[0]);
       else printf("%f, %f", num[0], num[1]);
 
    system("pause")
 
}
Добавлено через 13 минут
C
1
scanf("%f", num[i]);
поменять на
C
1
scanf("%f", &num[i]);
1
25 / 26 / 16
Регистрация: 27.09.2015
Сообщений: 110
08.02.2018, 09:31 3
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
 
int main()
{
    int numberMin = 0;
    int numberMax = 1;
 
    (numberMax > numberMin) ? printf("%d\n%d\n", numberMax, numberMin) : printf("%d\n%d\n", numberMin, numberMax);
 
    return 0;
 
}
1
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 09:41 4
Pavel Kisliuk, так еще короче
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
main()
{
 
   float num[2];
   int i;
 
     for(i=0; i<2; i++)
    {
        printf("Input %d number ", i+1);
        scanf("%f", &num[i]);
 
    }
     printf("----------------------------------\n");
 
       printf("%f, %f", num[num[0]<num[1]], num[num[0]>num[1]]);
 
    system("pause");
 
}
1
25 / 26 / 16
Регистрация: 27.09.2015
Сообщений: 110
08.02.2018, 09:53 5
Roddog2017, знаете в чём у Вас проблема. Например, чтобы объявить переменную типа float, нужно сделать так:

C
1
float x = 0.0f;
Если не поставить f после 0, то переменная всё-равно будет типа double. И вот мне интересно, потому что я не знаю, если объявить массив таким образом, как объявили Вы, в нём будут храниться значения типа float или типа double.
Для большей уверенности я бы сделал это через calloc.

C
1
float *newArray = (float *)calloc((size_t)2, sizeof(float));
0
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 09:57 6
Цитата Сообщение от Pavel Kisliuk Посмотреть сообщение
Например, чтобы объявить переменную типа float, нужно сделать так:
В первый раз за 30 лет о таком услышал. Пускай компилятор сам разбирается, какой тип ему подсовывают.
0
1491 / 899 / 255
Регистрация: 30.06.2015
Сообщений: 4,713
Записей в блоге: 54
08.02.2018, 12:02 7
Ещё проблема в том, что пытаются сравнивать два числа с плавающей точкой, что в общем и целом бессмысленная операция, когда её пытаются применить напрямую, нисколько не думая о последствиях..
0
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 13:16 8
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ещё проблема в том, что пытаются сравнивать два числа с плавающей точкой, что в общем и целом бессмысленная операция
Бессмысленная в чем?
0
1491 / 899 / 255
Регистрация: 30.06.2015
Сообщений: 4,713
Записей в блоге: 54
08.02.2018, 13:50 9
Цитата Сообщение от Roddog2017 Посмотреть сообщение
Бессмысленная в чем?
https://habrahabr.ru/post/112953/
По крайней мере, прежде сравнения необходимо переводить числа с плавающей точкой в целые, или использовать другие методы, которые можно нагуглить.
0
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 13:53 10
CoderHuligan, к теме данного поста это не относится. А по обработке чисел с плавающей точкой знаю не по наслышке - занимаюсь обработкой GNSS-измерений и разрабатываю мат. аппарат
1
1491 / 899 / 255
Регистрация: 30.06.2015
Сообщений: 4,713
Записей в блоге: 54
08.02.2018, 13:58 11
Цитата Сообщение от Roddog2017 Посмотреть сообщение
к теме данного поста это не относится.
Как сказать.. Оператор if или ><== предполагают работу с целыми операндами, а мы им подсовываем вещественные. Что получается? А получается каст в целое со всеми вытекающими. Разве не так?
0
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 14:04 12
Цитата Сообщение от CoderHuligan Посмотреть сообщение
><==
а разве работа этих операндов не возвращает true/false?
0
1491 / 899 / 255
Регистрация: 30.06.2015
Сообщений: 4,713
Записей в блоге: 54
08.02.2018, 14:06 13
Цитата Сообщение от Roddog2017 Посмотреть сообщение
а разве работа этих операндов не возвращает true/false?
Похоже вы так ничего и не поняли..
0
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 14:17 14
Как процессор работает с вещественными числами - небольшое представление имею начинал на С кодить с помощью "компилятора" Hisoft C для Z80 там такого типа, как float и в помине не было
0
1491 / 899 / 255
Регистрация: 30.06.2015
Сообщений: 4,713
Записей в блоге: 54
08.02.2018, 14:35 15
Цитата Сообщение от Roddog2017 Посмотреть сообщение
там такого типа, как float и в помине не было
Это понятно. Например в Форт изначально никакого флоата не было, это потом уже его добавили ради "удобства" программистов. До этого вещественные числа эмулировали при помощи целых чисел, в виде дробей или путём умножения или деления на 10, 100 и т. д., поэтому проблем не было, ибо сравнение на больше меньше или равно производилось с целыми, как и положено.
Конечно в си можно почти всё. Можно сравнить два float и получить какой-то "результат", сильно но не совсем похожий на правду, в результате чего выйдет из строя белоярская АЭС, и ни о чём не заботиться. Но это не правильно.

Добавлено через 1 минуту
Это не правильно ибо в результате сравнения, программа получает совсем иные ветки исполнения, а это очень опасно.
0
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 14:39 16
CoderHuligan, В идеале - приводим вещественный тип к целому (путем умножения на 10вСТЕПЕНЬ) и сравниваем
1
1491 / 899 / 255
Регистрация: 30.06.2015
Сообщений: 4,713
Записей в блоге: 54
08.02.2018, 14:42 17
Цитата Сообщение от Roddog2017 Посмотреть сообщение
В идеале - приводим вещественный тип к целому (путем умножения на 10вСТЕПЕНЬ) и сравниваем
На данном этапе развития информатики, это самый простой и надёжный способ. Сначала нужно учесть погрешность вещественного числа и определить нужное число разрядов, а потом перевести его в целое.
0
36 / 35 / 17
Регистрация: 15.06.2017
Сообщений: 184
08.02.2018, 14:44 18
CoderHuligan, с этим я и сталкиваюсь каждый день по работе
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12717 / 7548 / 1761
Регистрация: 25.07.2009
Сообщений: 13,905
09.02.2018, 16:12 19
Цитата Сообщение от Pavel Kisliuk Посмотреть сообщение
Если не поставить f после 0, то переменная всё-равно будет типа double.
Да ну?! Это кто Вам такие чудеса рассказал?

И вообще у ТС ни слова не было про то, какие числа - целые, вещественные...

Ну и для разнообразия
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
    int a, b;
    
    while ( printf("Two space separated numbers: ") && scanf("%d%d", &a, &b) == 2 )
        printf("Big: %d; small: %d.\n", (a + b + abs(a - b)) / 2, (a + b - abs(a - b)) / 2);
    
    return 0;
}
1
25 / 26 / 16
Регистрация: 27.09.2015
Сообщений: 110
09.02.2018, 21:20 20
Цитата Сообщение от easybudda Посмотреть сообщение
Да ну?! Это кто Вам такие чудеса рассказал?
было это давно, но в голове отложилось, у же не помню что писал, но постоянно выскакивал некий warning связанный с float, я тогда обратился к старшим, и там сказали, что если присвоить значение без f на конце, то будет double, если я ошибаюсь, то буду рад, если просвятите, я всегда за то, чтобы совершенствоваться.
0
09.02.2018, 21:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.02.2018, 21:20
Помогаю со студенческими работами здесь

Даны 2 числа. Вывести сначало большее а затем меньше из них
даны 2 числа вывести сначало большее а затем меньше из них зарание спасибо

Даны два числа. Записать в регистр SI меньшее, а в регистр DI - большее из них
Даны два числа. Записать в регистр SI меньшее, а в регистр DI - большее из них.

Даны два числа. Большее из них заменить полусуммой, а меньшее заменить удвоенным произведением
Даны два числа. Большее из них заменить полусуммой, а меньшее заменить удвоенным произведением.

Даны два числа, вывести большее из них
Даны два числа, вывести большее из них. Добавлено через 30 минут Вот так правильно? include...


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

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

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