Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
luiza-05
1 / 1 / 0
Регистрация: 04.04.2011
Сообщений: 12
#1

С++ программирование, цикл - C++

01.05.2011, 19:38. Просмотров 1140. Ответов 17
Метки нет (Все метки)

Найти 10 первых натуральных чисел, оканчивающихся на цифру 7, кратных числу 9 и больших 100
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2011, 19:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос С++ программирование, цикл (C++):

Выбор кафедры в дальнейшей жизни: прикладное программирование VS системное программирование
Сразу извиняюсь что очень не по теме но всё же лучшего форума для этого вопроса...

Почему цикл на при 1 уходит в бесконечный цикл?
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdio.h>...

Цикл: цикл for вообще никак не воспринимается транслятором
Пишу программу, которая производит различные действия с одномерным массивом....

Цикл for/Цикл while Помогите срочно пожалуйста...
1.Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с...

Задание на цикл с параметром и цикл с постусловием
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и...

Цикл с параметром и цикл с условием
1. Составить программу вычисления суммы первых 10 непарных чисел 2. ...

17
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 19:42 #2
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main(){
    for (int i = 107, c=0;  c< 10; i+=10) {
        if (i%9==0) {
            std::cout << i << ' ';
            c++;
        }
    }
    return 0;
}
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
01.05.2011, 19:48 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
bool is_corr(const int &a){
  return a % 10 == 7 && !(a % 9);
}
 
int main(){
  size_t cnt = 0;
  for(int i = 101; cnt != 10; ++i)
    if(is_corr(i)){
      std::cout << i << ' ';
      ++cnt;
    }
  return 0;
}
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:29 #4
Хотя еще быстрее будет так
C++
1
2
3
4
5
6
7
8
#include <iostream>
int main(){
    for (short i = 117, c=0;  c< 10; i+=90) {
        std::cout << i << ' ';
        c++;
    }
    return 0;
}
Добавлено через 34 минуты
Есть небольшой вопросик...
Ради интереса я прогнал код от asics и справнил его скорость со своим.
И, собственно, я не недоумении.
Теоретически моя программа должна выигрывать по скорости более чем в 100 раз, но на деле оказалось, что скорость программ практически равна.
Почему?...
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 20:33 #5
diagon, Потому что компы сейчас мощные и выполняют такие операции очень быстро. Откуда ж тут разнице то взяться? Всего-навсего цикл + проверка на совпадение условию..
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:35 #6
Я поставил условие на первые 100000 чисел.
И у asics цикл проверяет каждое число на кратность девяти и последнюю цифру, у меня же банально увеличивает i на 90 и выводит ее.
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 20:38 #7
diagon, Ну и на сколько разница? Чем проверяли? Да и какой смысл зацикливаться на оптимизации, которая в данном случае уж точно никому не нужна?

Знаете закон преждевременной оптимизации? Он звучит просто.
Не делай этого!
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:39 #8
Секундумером на наручных часах=) В обоих случаях приблизительно 8 секунд, разницы нету.
Я сейчас динамическое программирование изучаю. Какой от него смысл в таком случае?
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
01.05.2011, 20:46 #9
Цитата Сообщение от diagon Посмотреть сообщение
Я сейчас динамическое программирование изучаю. Какой от него смысл в таком случае?
Это отдельный способ решения задач в олимпиадном программировании, причем очень полезный.
Только я не пойму, зачем вы привели это сюда.
Зачем рекурсия ? (подобный вопрос).
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:49 #10
Ну смотри, казалось бы, в первое случае одна итерация цикла выполняется меньше времени, во втором больше. В первом случае итераций происходит в 90 раз меньше, чем во втором. И тем не менее, скорость работы программ равна. Зачем нужно оптимизировать программу по времени, если нету эффекта?
Насчет рекурсии интересный вопрос, я могу сказать только, что это красивее, так как по скорости значительно проигрывает линейному перебору.
Цитата Сообщение от neske Посмотреть сообщение
Только я не пойму, зачем вы привели это сюда.
Ну это есть не что иное, как динамическое программирование. Зачем выполнять проверку для каждого числа больше ста, если все эти числа-арифметическая последовательность?
0
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
01.05.2011, 20:49 #11
diagon, тут еще вот какое дело - не факт, что компилятор скомпилировал код именно в таком виде, как он выглядет в С (компилятор мог оптимизировать код, по своему усмотрению, в т.ч. сделать ф-цию inline). Нужно посмотреть ассемблерный код, что бы понять в чем дело.
1
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 20:51 #12
diagon, Олимпиадные задачи обычно не столь тривиальны и там действительно нужно динамическое программирование или другие пути, но никак не в лоб.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:53 #13
Цитата Сообщение от Kastaneda Посмотреть сообщение
diagon, тут еще вот какое дело - не факт, что компилятор скомпилировал код именно в таком виде, как он выглядет в С (компилятор мог оптимизировать код, по своему усмотрению, в т.ч. сделать ф-цию inline). Нужно посмотреть ассемблерный код, что бы понять в чем дело.
Компиляторы, конечно, нынче умные пошли, но в данном случае практически разные алгоритмы.
diagon, Олимпиадные задачи обычно не столь тривиальны и там действительно нужно динамическое программирование или другие пути, но никак не в лоб.
Знаю, бывал на таких=)
0
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
01.05.2011, 20:58 #14
Цитата Сообщение от diagon Посмотреть сообщение
но в данном случае практически разные алгоритмы.
Ну и что? Тут вообще цикл с заранее известными константами, компилятор мог это все превратить в :
C
1
2
3
4
5
printf(...);
printf(...);
printf(...);
printf(...);
//и так 10 раз
2
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 21:01 #15
Т.е. он самостоятельно нашел последовательность? Забавно...
0
Kastaneda
Jesus loves me
Эксперт С++
4760 / 2963 / 341
Регистрация: 12.12.2009
Сообщений: 7,524
Записей в блоге: 2
Завершенные тесты: 1
01.05.2011, 21:04 #16

Не по теме:

Реальный случай: люди проверяли 2 разных компилятора, написали длинный код, с кучей математических вычислений, скомпилировали и в результате, программа скомпилированная на одном из компиляторов работала мнгновенно (чего не могло быть вообще). Когда посмотрели ассемблерный код, выяснялось, что по скольку вычисления были с константами, компилятор из длинного кода сделал одну строку - вывод конечного результата )))



Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от diagon Посмотреть сообщение
Т.е. он самостоятельно нашел последовательность? Забавно...
Это предположение... Я не занимался глубоко подобными вещами.

1
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 22:02 #17
Специально скачал Devcpp, отключил там всю оптимизацию... Обе проги работают в 2 раза быстрее чем на билдере(о_О), но тоже одинаковое количество времени.
0
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 22:06 #18
diagon, Откровенно говоря компилятор вообще многое может сделать на стадии компиляции. Факториал посчитать к примеру.
1
01.05.2011, 22:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2011, 22:06
Привет! Вот еще темы с решениями:

Изменить цикл for на цикл do-while
помогите передать программу с цикла FOR в цикл DO-WHILE #include &lt;math.h&gt;...

заменить цикл for на цикл while
#include &lt;iostream&gt; using namespace std; int main() { int N, M,...

Программирование на C++
Программирование на C++ Добавлено через 33 секунды Как правильно изучать...

Программирование на С++
Люди помогите пожалуйста решить 3 задачи. По учебе завал, не успеваю все:read:!...


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

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

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