Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/113: Рейтинг темы: голосов - 113, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 02.03.2011
Сообщений: 6

Как вывести числа от 1 до 1000 без сравнений в Си++?

02.03.2011, 18:08. Показов 25855. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.

Получил на собеседовании по Си++ такой странный вопрос, подумал, ещё подумал.
Ничего путного в голову не пришло. Вообщем стало дико любопытно, а как это
сделать средствами Си++?

Переадресую вопрос умным головам форума. Подскажите.

P.S. Человек с которым общался явно знал не менее двух решений.
Но я был не в том положении, чтобы спрашивать у него.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.03.2011, 18:08
Ответы с готовыми решениями:

Вывести все числа из диапазона от 0 до 1000, которые делятся на 2 и на 3 без остатка (for, while)
Напишите программу которая выводит все числа из диапазона от 0 до 1000 которая делятца на 2 и на 3 без остатка. 2 варианта (While, for)

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

Как вывести на консоль числа от 1 до 1000 не используя цикл?
Как вывести на консоль числа от 1 до 1000 не используя цикл ?

68
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
16.03.2011, 00:53
Студворк — интернет-сервис помощи студентам
А это тоже считается?

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
#include <vector>
#include <iostream>
#include <algorithm>
 
struct some
{
    some():i(0)
    {
    }
    int operator () ()
    {
        return ++i;
    }
    int i;
};
 
int main()
{
    const int n=1000;
    std::vector<int>(n);
    some sm;
    std::generate(vec.begin(), vec.end(), sm);
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    return 0;
}
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
16.03.2011, 01:01
а если так
for(int i=1000;i;i--)
printf("%d",1001-i);
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
16.03.2011, 01:04
ForEveR, алгоритмы в большинстве своём — оболочки для циклов, так что не, не считается :) .
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.03.2011, 01:09
ValeryS, думаете, в вашем коде нет сравнений?
0
 Аватар для r3almaster
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 4
16.03.2011, 01:11
А метки и переходы никак?)
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
16.03.2011, 01:23
Цитата Сообщение от silent_1991 Посмотреть сообщение
ValeryS, думаете, в вашем коде нет сравнений?
в С нет
когда скомпилируется может быть и будут( в машинных кодах) зависит от архитектуры
здесь используется два допущения
1 в С 0 false любое число true
2 цикл for крутится до тех пор пока условие(вторая запись) true
т.е. будет крутится пока i не станет 0
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.03.2011, 01:25
ValeryS, т.е. происходит неявное сравнение с нулём. Т.е. факт сравнения налицо.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
16.03.2011, 01:26
можно написать и так
for(int i=1;i%1001;i++)
но такой вариант с while уже писали
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.03.2011, 01:28
И снова неявное сравнение с нулём. Циклы тут не прокатят.
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
16.03.2011, 01:29
помоему задачу надо было ставить более конкретно:
запрещены команды j** (исключая jmp; или cmp\test ?) и команды цикла, такие как loop
любое условный переход создаст в конечном коде инструкцию j**
цикл - либо создаст loop (выполнится ecx раз) либо j**
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
16.03.2011, 01:29
Цитата Сообщение от silent_1991 Посмотреть сообщение
ValeryS, т.е. происходит неявное сравнение с нулём. Т.е. факт сравнения налицо
где сравнение???
я не явно привожу int к bool
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.03.2011, 01:31
ValeryS, факт неявности не исключает факт сравнения.

Добавлено через 50 секунд
nxnx, ну почему же, бесконечный цикл, судя по всему, использовать разрешается.
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
16.03.2011, 01:32
Цитата Сообщение от silent_1991 Посмотреть сообщение
ValeryS, факт неявности не исключает факт сравнения.

Добавлено через 50 секунд
nxnx, ну почему же, бесконечный цикл, судя по всему, использовать разрешается.
бесконечный цикл соберётся в jmp что я и отметил
1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.03.2011, 01:34
nxnx, а, да, извиняюсь. Невнимательно прочитал ваше сообщение.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
16.03.2011, 01:34
в архитектуре ATmega есть набор команд которые выполняются в зависимости от флага
а флаг выставляется не только операциями сравнения.
поэтому я и написал в С НЕТ сравнений
а в машинных кодах как повезет
разговор по моему о С
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.03.2011, 01:37
ValeryS, во-первых, разговор, по-моему, о Си++. Во-вторых, всю жизнь думал, что while (i % 1001) эквивалентно while (i % 1001 != 0). Или я чего-то не понимаю?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
16.03.2011, 01:46
Цитата Сообщение от silent_1991 Посмотреть сообщение
while (i % 1001) эквивалентно while (i % 1001 != 0).
Не эквивалентно. Хотя результат будет один и тот же(Вот такая загогулина)
в первом случае i % 1001 у тебя будут значения от 0 до 1000 (далее по циклу)
во втором i % 1001 != 0 только два значения истина и ложь
стандарт нам обещает только что ЛОЖЬ =0
ИСТИНА любое другое значение
о том что значение будет сравниваться с 0 никто не обещает
и то что это делают компиляторы для ИНТЕЛа
не факт что будут делать на других процессорах
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.03.2011, 01:48
ValeryS, не понимаю, если мы сейчас говорим о сях, о какой истине или лжи идёт речь?
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
16.03.2011, 01:50
Assembler
1
2
3
4
5
6
7
8
9
10
!    for (i=0;i<100;i++)
main()
main+14: movl   $0x0,0x1c(%esp)
main+22: jmp    0x4013dc <main+28>
main+24: incl   0x1c(%esp)
main+28: cmpl   $0x63,0x1c(%esp)
main+33: jle    0x4013d8 <main+24>
!    {
!
!    }
Assembler
1
2
3
4
5
6
7
8
9
10
11
!    for (i=0;i<j;i++)
main()
main+22: movl   $0x0,0x1c(%esp)
main+30: jmp    0x4013e4 <main+36>
main+32: incl   0x1c(%esp)
main+36: mov    0x1c(%esp),%eax
main+40: cmp    0x18(%esp),%eax
main+44: jl     0x4013e0 <main+32>
!    {
!
!    }

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
!    while  (i%1000)
main()
main+22: jmp    0x4013dc <main+28>
main+28: mov    0x1c(%esp),%eax
main+32: mov    $0x3e8,%ecx
main+37: cltd   
main+38: idiv   %ecx
main+40: mov    %edx,%eax
main+42: test   %eax,%eax
main+44: jne    0x4013d8 <main+24>
!    {
!        i++;
main+24: incl   0x1c(%esp)
!    }
обратите внимание, везде есть инструкции j**
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
16.03.2011, 01:55
а если так рассуждать то здесь тупо подойдет только второй пост
printN<500>();
компилятор скорее всего загонит в цикл

Добавлено через 3 минуты
Цитата Сообщение от silent_1991 Посмотреть сообщение
ValeryS, не понимаю, если мы сейчас говорим о сях, о какой истине или лжи идёт речь?
переменная типа bool
true
false
BOOL
TRUE
FALSE
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2011, 01:55

Написать функцию, которая получает 2 целых числа и возвращает большее из них без циклов, ветвлений и сравнений
решаем всем офисом &quot;всем привет! лектор задал задачку, я ломал голову но так и не придумал. вопрос простой. надо написать...

Вывести на экран те числа из интервала [10 .. 1000], которые меньше произведения цифр десятичной записи числа
Написать программу: среди чисел от 10 до 1000,найти и вывести на экран те, которые меньше произведения цифр десятичной записи этого числа....

Вывести простые числа в диапазоне от 2 до 1000
Здраствуйте, есть задачка: Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000. (Число называется...

Вывести простые числа на интервале от 2 до 1000
Создать программу, которая выводит на экран простые числа в диапазоне от 2 до 1000. (Число называется простым, если оно делится только на 1...

Вивести на екран усі числа, що діляться на 11 без остачі від 11 до 1000 крім 110 і 220.
ДОПОМОЖІТЬ ДОРОБИТИ ЗАДАЧУ!:help: Вивести на екран усі числа, що діляться на 11 без остачі від 11 до 1000 крім 110 і 220. public...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru