Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 81, средняя оценка - 4.65
sergey1369
0 / 0 / 0
Регистрация: 02.03.2011
Сообщений: 6
#1

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

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

Привет всем.

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

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

P.S. Человек с которым общался явно знал не менее двух решений.
Но я был не в том положении, чтобы спрашивать у него.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2011, 18:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как вывести числа от 1 до 1000 без сравнений в Си++? (C++):

Вывести числа, заканчивающиеся на 3 или 5, находящиеся в диапазоне от 1 до 1000 - C++ Builder
Добрый день! не могли бы мне помочь решить вот задачу запрограммированную в кнопку на форме void __fastcall...

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

Вывести все целые числа, на которые оба введенных числа делятся без остатка - C++
Пользователь вводит два целых числа. Необходимо вывести все целые числа, на которые оба введенных числа делятся без остатка. вот код...

Даны числа от 1 до 1000 и число m. Вывести результат умножение куба нечетных сотен на число m - C++
как записать?

Как из числа double 4.056 извлечь число 1000? - C++
То есть число это читается так: 4 целых 56 тысячных, вот мне нужно тысячу извлечь программно. Функции, предлагаемые math.h извлекают либо...

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

68
vow
15.03.2011, 02:26 #16
CheshireCat,
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
15.03.2011, 11:05 #17
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>
 
#define PRINT5(N) printf("%d %d %d %d %d ",N,N+1,N+2,N+3,N+4);N+=5
#define PRINT25(N) PRINT5(N);PRINT5(N);PRINT5(N);PRINT5(N);PRINT5(N)
 
#define PRINT100(N)   PRINT25(N); PRINT25(N); PRINT25(N);PRINT25(N)
#define PRINT250(N)  PRINT100(N);PRINT100(N); PRINT25(N);PRINT25(N)
#define PRINT1000(N) PRINT250(N);PRINT250(N);PRINT250(N);PRINT250(N)
 
 
int main(void)
{
  int i=1;
 
  PRINT1000(i); //Выводит числа от i(включая) до i+1000(исключая)
 
  
  printf("\nPress Enter to exit...");int fcked_win32;scanf("%c",(char*)&fcked_win32);
  return 0;
  
}
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
15.03.2011, 22:55 #18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
template<unsigned int N>
inline void printnums()
{
    printnums<N-1>();
    std::cout << N << std::endl;
}
 
template<>
inline void printnums<0>()
{
}
 
int main()
{
    printnums<1000>();
}
не всякий компилятор потянет
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
15.03.2011, 23:05 #19
Nick Alte, во-первых, этот вариант уже был, а во-вторых, всякий. Надо только установить глубину реализации шаблонов в тысячу.
0
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
15.03.2011, 23:06 #20
volovzi, если не ошибаюсь, то многие версии визуала просто не вытянут тысячу вне зависимости от настроек. Ну а что было - извиняйте, не разглядел именно этот вариант.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.03.2011, 00:53 #21
А это тоже считается?

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
ValeryS
Модератор
6705 / 5114 / 482
Регистрация: 14.02.2011
Сообщений: 17,183
16.03.2011, 01:01 #22
а если так
for(int i=1000;i;i--)
printf("%d",1001-i);
0
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
16.03.2011, 01:04 #23
ForEveR, алгоритмы в большинстве своём — оболочки для циклов, так что не, не считается :) .
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
16.03.2011, 01:09 #24
ValeryS, думаете, в вашем коде нет сравнений?
0
r3almaster
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 4
16.03.2011, 01:11 #25
А метки и переходы никак?)
0
ValeryS
Модератор
6705 / 5114 / 482
Регистрация: 14.02.2011
Сообщений: 17,183
16.03.2011, 01:23 #26
Цитата Сообщение от silent_1991 Посмотреть сообщение
ValeryS, думаете, в вашем коде нет сравнений?
в С нет
когда скомпилируется может быть и будут( в машинных кодах) зависит от архитектуры
здесь используется два допущения
1 в С 0 false любое число true
2 цикл for крутится до тех пор пока условие(вторая запись) true
т.е. будет крутится пока i не станет 0
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
16.03.2011, 01:25 #27
ValeryS, т.е. происходит неявное сравнение с нулём. Т.е. факт сравнения налицо.
0
ValeryS
Модератор
6705 / 5114 / 482
Регистрация: 14.02.2011
Сообщений: 17,183
16.03.2011, 01:26 #28
можно написать и так
for(int i=1;i%1001;i++)
но такой вариант с while уже писали
0
silent_1991
Эксперт С++
4986 / 3043 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
16.03.2011, 01:28 #29
И снова неявное сравнение с нулём. Циклы тут не прокатят.
0
nxnx
Формучанин
362 / 293 / 16
Регистрация: 02.11.2010
Сообщений: 1,234
16.03.2011, 01:29 #30
помоему задачу надо было ставить более конкретно:
запрещены команды j** (исключая jmp; или cmp\test ?) и команды цикла, такие как loop
любое условный переход создаст в конечном коде инструкцию j**
цикл - либо создаст loop (выполнится ecx раз) либо j**
0
16.03.2011, 01:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2011, 01:29
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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