Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.09.2010
Сообщений: 6
1

Вывести по убыванию числа, без цикла)

27.09.2010, 02:01. Показов 2823. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задачка в универе..
Задано числа a,b,c,d. Вывести их в порядке уменьшения.

дело в том что через масив и цикл это делается очень просто, но так как лаба первая по Си у меня, то как бы циклы и масивы использовать нельзя.
я решил так, но програма получается довольно большая, может кто знает способ решить проще, уж никак не хочется рисовать блок-схему к этой задачке))?

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
#include<stdio.h>=
#include<math.h>=
int main()
{
    int a,b,c,d,stop;
    printf("\nVveditb a=");
    scanf("%d",&a);
    printf("\nVveditb b=");
    scanf("%d",&b);
    printf("\nVveditb c=");
    scanf("%d",&c);
    printf("\nVveditb d=");
    scanf("%d",&d);
    stop=1;
 
    if (a>=b&&b>=c&&c>=d&&stop==1) {printf("%d %d %d %d",a,b,c,d);stop=0;}
    if (a>=b&&b>=d&&d>=c&&stop==1) {printf("%d %d %d %d",a,b,d,c);stop=0;}
    if (a>=c&&c>=b&&b>=d&&stop==1) {printf("%d %d %d %d",a,c,b,d);stop=0;}
    if (a>=c&&c>=d&&d>=b&&stop==1) {printf("%d %d %d %d",a,c,d,b);stop=0;}
    if (a>=d&&d>=c&&c>=b&&stop==1) {printf("%d %d %d %d",a,d,c,b);stop=0;}
    if (a>=d&&d>=b&&b>=c&&stop==1) {printf("%d %d %d %d",a,d,b,c);stop=0;}
 
    if (b>=a&&a>=c&&c>=d&&stop==1) {printf("%d %d %d %d",b,a,c,d);stop=0;}
    if (b>=a&&a>=d&&d>=c&&stop==1) {printf("%d %d %d %d",b,a,d,c);stop=0;}
    if (b>=c&&c>=a&&a>=d&&stop==1) {printf("%d %d %d %d",b,c,a,d);stop=0;}
    if (b>=c&&c>=d&&d>=a&&stop==1) {printf("%d %d %d %d",b,c,d,a);stop=0;}
    if (b>=d&&d>=a&&a>=c&&stop==1) {printf("%d %d %d %d",b,d,a,c);stop=0;}
    if (b>=d&&d>=c&&c>=a&&stop==1) {printf("%d %d %d %d",b,d,c,a);stop=0;}
 
    if (c>=a&&a>=b&&b>=d&&stop==1) {printf("%d %d %d %d",c,a,b,d);stop=0;}
    if (c>=a&&a>=d&&d>=b&&stop==1) {printf("%d %d %d %d",c,a,d,b);stop=0;}
    if (c>=b&&b>=a&&a>=d&&stop==1) {printf("%d %d %d %d",c,b,a,d);stop=0;}
    if (c>=b&&b>=d&&d>=a&&stop==1) {printf("%d %d %d %d",c,b,d,a);stop=0;}
    if (c>=d&&d>=a&&a>=b&&stop==1) {printf("%d %d %d %d",c,d,a,b);stop=0;}
    if (c>=d&&d>=b&&b>=a&&stop==1) {printf("%d %d %d %d",c,d,b,a);stop=0;}
 
    if (d>=a&&a>=b&&b>=c&&stop==1) {printf("%d %d %d %d",d,a,b,c);stop=0;}
    if (d>=a&&a>=c&&c>=d&&stop==1) {printf("%d %d %d %d",d,a,c,b);stop=0;}
    if (d>=b&&b>=a&&a>=c&&stop==1) {printf("%d %d %d %d",d,b,a,c);stop=0;}
    if (d>=b&&b>=c&&c>=a&&stop==1) {printf("%d %d %d %d",d,b,c,a);stop=0;}
    if (d>=c&&c>=a&&a>=b&&stop==1) {printf("%d %d %d %d",d,c,a,b);stop=0;}
    if (d>=c&&c>=b&&b>=a&&stop==1) {printf("%d %d %d %d",d,c,b,a);stop=0;}
    return 0;
}
Выводит:
Vveditb a=5
Vveditb b=5
Vveditb c=4
Vveditb d=6
6 5 5 4
Process returned 0 (0x0) execution time : 4.750 s
Press any key to continue.

up.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2010, 02:01
Ответы с готовыми решениями:

Без операторов цикла вывести цифры числа через пробел
Решить не используя операторы цикла. Дано натуральное число N. Выведите все его цифры по одной, в...

Как вывести массив без цикла
Доброго времени суток всем Как вывести массив,но без цикла и одной строкой? К примеру тут: ...

Вывести записи на главную страницу без цикла
Привет всем. Я новичок в wp и впервые стал натягивать свой макет на вордпресс. Делается это с одной...

Реализовать шаблонную функцию (без цикла), выводящую числа от 0 до 100
Помогите, пожалуйста)

14
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
27.09.2010, 04:48 2
Запрет на использование циклов указан в условиях лабы ?
0
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
27.09.2010, 04:51 3
Есть такая штука, сортирующие сети (sorting networks). С помощью них твоя программа будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <utility>
 
using namespace std;
 
int main()
{
    int a = 5, b = 3, c = 4, d = 6;
 
    if (a < c) swap(a, c);
    if (b < d) swap(b, d);
    if (a < b) swap(a, b);
    if (c < d) swap(c, d);
    if (b < c) swap(b, c);
    
    cout << a << ' ' << b << ' ' << c << ' ' << d << endl;
}
0
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
27.09.2010, 05:56 4
alexzak, Во первых, речь идет о языке Си а не Си++, а во вторых если нельзя юзать циклы, значит и swap тем более нельзя! Я так понимаю нужно проработать один из алгоритмов сортировки вручную...
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
27.09.2010, 06:13 5
Цитата Сообщение от romex Посмотреть сообщение
Я так понимаю нужно проработать один из алгоритмов сортировки вручную...

Не по теме:

Бред какой-то... Обычно учатся не писать говнокод, а тут все наоборот. А если нужно было бы сортировать не 4, а 10 элементов? Или 100?
И да, в решении топикстартера я не увидел "проработку алгоритмов сортировки"


Мне вот тоже интересен ответ на вопрос:
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
Запрет на использование циклов указан в условиях лабы ?
Цитата Сообщение от romex Посмотреть сообщение
alexzak, Во первых, речь идет о языке Си а не Си++
Вот так прям сложно переделать этот вариант под С...
Цитата Сообщение от romex Посмотреть сообщение
если нельзя юзать циклы, значит и swap тем более нельзя
Где это сказано? swap просто обменивает значения двух переменных, ее можно было бы определить и самому. Вообще, если следовать твоей "логике", то "если нельзя юзать циклы, значит и printf/scanf/etc тем более нельзя".
0
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
27.09.2010, 06:13 6
Цитата Сообщение от romex Посмотреть сообщение
alexzak, Во первых, речь идет о языке Си а не Си++, а во вторых если нельзя юзать циклы, значит и swap тем более нельзя! Я так понимаю нужно проработать один из алгоритмов сортировки вручную...
Не говори! Лоханулся че та
0
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
27.09.2010, 06:21 7
Бред какой-то... Обычно учаться не писать говнокод, а тут все наоборот. А если нужно было бы сортировать не 4, а 10 элементов? Или 100?
Так первая лаба же!!!
У меня такая же была 3 года назад, сразу после Hello world!!! Нас долго за это тиранили. А вот кстати эта лаба:
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
#include <stdio.h>
//пузырек!!!
int main(){
    int a=100500,b=1000000,c=2000000,d=4000000,z,i=0;
    if(a<b){z=a;a=b;b=z;i++;}
    if(b<c){z=b;b=c;c=z;i++;}
    if(c<d){z=c;c=d;d=z;i++;}
    if(i!=0){
        i=0;
        if(a<b){z=a;a=b;b=z;i++;}
        if(b<c){z=b;b=c;c=z;i++;}
        if(c<d){z=c;c=d;d=z;i++;}
        if(i!=0){
            i=0;
            if(a<b){z=a;a=b;b=z;i++;}
            if(b<c){z=b;b=c;c=z;i++;}
            if(c<d){z=c;c=d;d=z;i++;}
            if(i!=0){
                i=0;
                if(a<b){z=a;a=b;b=z;i++;}
                if(b<c){z=b;b=c;c=z;i++;}
                if(c<d){z=c;c=d;d=z;i++;}
            }
        }
    }
    printf("%d %d %d %d",a,b,c,d);
    return 0;
}
Еле нашел!

Добавлено через 1 минуту
Где это сказано? swap просто обменивает значения двух переменных, ее можно было бы определить и самому. Вообще, если следовать твоей "логике", то "если нельзя юзать циклы, значит и printf/scanf/etc тем более нельзя".
Учителя первого курса хуже военных!
1
Nameless One
27.09.2010, 06:22
  #8

Не по теме:

romex, ну что сказать, мои соболезнования, не повезло тебе с преподавателями

0
Эксперт С++
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
27.09.2010, 06:41 9
romex, если тебе интересно мнение со стороны, то вышеуказанный код можно держать только как пример ужасного стиля программирования.
Напиши через цикл, или через рекурсию, или воспользуйся алгоритмом из библиотеки STL. А на вопросы ответь, что запрета не было и ты решил как умел. Преподавателей, к-рые подавляют инициативу и творчество студентов, надо гнать в шею.
0
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
27.09.2010, 06:49 10
romex, если тебе интересно мнение со стороны, то вышеуказанный код можно держать только как пример ужасного стиля программирования.
Напиши через цикл, или через рекурсию, или воспользуйся алгоритмом из библиотеки STL. А на вопросы ответь, что запрета не было и ты решил как умел. Преподавателей, к-рые подавляют инициативу и творчество студентов, надо гнать в шею.
Инициатор темы не я, прога 3 летней давности, запрет был, никто никого не подавляет.
0
84 / 57 / 8
Регистрация: 07.08.2010
Сообщений: 185
27.09.2010, 07:33 11
Цитата Сообщение от romex Посмотреть сообщение
Учителя первого курса хуже военных!
Товарищ сержант^H^H^H учитель первого курса! Разрешите представить свой вариант самой длинной и непонятной проги!
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
#include <stdio.h>
 
int main()
{
    int a = 5, b = 3, c = 4, d = 6;
 
    if (a < c)
    {
        if (b < d)
        {
            if (c < d)
            {
                if (a < b)
                {
                    if (c < b)
                    {
                        printf("%d %d %d %d\n", d, b, c, a);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", d, c, b, a);
                    }
                }
                else
                {
                    if (c < a)
                    {
                        printf("%d %d %d %d\n", d, a, c, b);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", d, c, a, b);
                    }
                }
            }
            else
            {
                if (a < b)
                {
                    if (d < b)
                    {
                        printf("%d %d %d %d\n", c, b, d, a);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", c, d, b, a);
                    }
                }
                else
                {
                    if (d < a)
                    {
                        printf("%d %d %d %d\n", c, a, d, b);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", c, d, a, b);
                    }
                }
            }
        }
        else
        {
            if (c < b)
            {
                if (a < d)
                {
                    if (c < d)
                    {
                        printf("%d %d %d %d\n", b, d, c, a);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", b, c, d, a);
                    }
                }
                else
                {
                    if (c < a)
                    {
                        printf("%d %d %d %d\n", b, a, c, d);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", b, c, a, d);
                    }
                }
            }
            else
            {
                if (a < d)
                {
                    if (b < d)
                    {
                        printf("%d %d %d %d\n", c, d, b, a);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", c, b, d, a);
                    }
                }
                else
                {
                    if (b < a)
                    {
                        printf("%d %d %d %d\n", c, a, b, d);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", c, b, a, d);
                    }
                }
            }
        }
    }
    else
    {
        if (b < d)
        {
            if (a < d)
            {
                if (c < b)
                {
                    if (a < b)
                    {
                        printf("%d %d %d %d\n", d, b, a, c);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", d, a, b, c);
                    }
                }
                else
                {
                    if (a < c)
                    {
                        printf("%d %d %d %d\n", d, c, a, b);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", d, a, c, b);
                    }
                }
            }
            else
            {
                if (c < b)
                {
                    if (d < b)
                    {
                        printf("%d %d %d %d\n", a, b, d, c);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", a, d, b, c);
                    }
                }
                else
                {
                    if (d < c)
                    {
                        printf("%d %d %d %d\n", a, c, d, b);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", a, d, c, b);
                    }
                }
            }
        }
        else
        {
            if (a < b)
            {
                if (c < d)
                {
                    if (a < d)
                    {
                        printf("%d %d %d %d\n", b, d, a, c);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", b, a, d, c);
                    }
                }
                else
                {
                    if (a < c)
                    {
                        printf("%d %d %d %d\n", b, c, a, d);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", b, a, c, d);
                    }
                }
            }
            else
            {
                if (c < d)
                {
                    if (b < d)
                    {
                        printf("%d %d %d %d\n", a, d, b, c);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", a, b, d, c);
                    }
                }
                else
                {
                    if (b < c)
                    {
                        printf("%d %d %d %d\n", a, c, b, d);
                    }
                    else
                    {
                        printf("%d %d %d %d\n", a, b, c, d);
                    }
                }
            }
        }
    }
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 27.09.2010
Сообщений: 6
27.09.2010, 12:33  [ТС] 12
Запрета на циклы как такового не было )
Но они начинаются через 1 тему, тоесть я не думаю что автора методички давали задачу на решение, которая решается циклом, тогда когда до циклов как до евереста =)
Всем спасиба, кто помог, через полтора часа пара))))

alexzak, вот твое решение мне понравилось, вот только думаю защитить не смогу))
И кстате у нас мы начали Сишку учить на втором курсе)))
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
27.09.2010, 12:35 13
Цитата Сообщение от DMkExtreme Посмотреть сообщение
Запрета на циклы как такового не было )
Ну так используй циклы, Люк!
0
0 / 0 / 0
Регистрация: 27.09.2010
Сообщений: 6
27.09.2010, 12:46  [ТС] 14
Переделанная "типа" под мои знания прога выглядит вот так:

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
#include<stdio.h>
 
int main()
{
    int a,b,c,d,st;
    printf("\nVveditb a=");
    scanf("%d",&a);
    printf("\nVveditb b=");
    scanf("%d",&b);
    printf("\nVveditb c=");
    scanf("%d",&c);
    printf("\nVveditb d=");
    scanf("%d",&d);
 
    if (a < c)
        {
            st=a;
            a=c;
            c=st;
        }
    if (b < d)
        {
            st=b;
            b=d;
            d=st;
        }
    if (a < b)
        {
            st=a;
            a=b;
            b=st;
        }
    if (c < d)
        {
            st=c;
            c=d;
            d=st;
        }
    if (b < c)
        {
            st=b;
            b=c;
            c=st;
        }
 
    printf("%d %d %d %d",a,b,c,d);
}
0
45 / 45 / 9
Регистрация: 11.04.2010
Сообщений: 223
27.09.2010, 13:39 15
Боже, как это сурово! Зачем было тогда тему так называть? Мы на втором курсе АЛУ без циклов моделировали и схему рисовали, а на первом сортировки вручную... тоже со схемами...
0
27.09.2010, 13:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2010, 13:39
Помогаю со студенческими работами здесь

Числа Фиббоначи вплоть до n, без цикла с параметром, только через while
Вывести на экран первые n чисел ряда Фибоначчи. Цикл с параметром не использовать.

Вывести три числа по убыванию
Дано целое число N (&gt; 3) и набор из N чисел. Найти три наибольших элемента из данного набора и...

Как правильно вывести строку двухмерного массива без применения цикла
Подскажите пожалуйста, вот я обьявляю строку char s; Если Мне нужен массив строк, то я обьявляю его...

Вывести на экран числа от 100 до 0 по убыванию
Здарова всем! Помогите пожалуйста &quot;вывести на экран от 100 и по убыванию до 0&quot; Заранее спасибо! ))


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

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