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

С++ для начинающих

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

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

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

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

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

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

Почему цикл на при 1 уходит в бесконечный цикл? - C++
#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <stdio.h> #include <string.h> int main() { int x=0, y=0,...

Цикл for/Цикл while Помогите срочно пожалуйста... - C++
1.Вычислить и вывести на экран в виде таблицы значения функции F от x1 до x2 с шагом dx. где a, b и c - действительные числа. 2.Цикл...

Задание на цикл с параметром и цикл с постусловием - C++
Помогите пожалуйста написать программу с этими циклами. 1. Вычислить и напечатать таблицу значений функции Z= (e^-x)sinx для 0<=x<=П,...

Цикл с параметром и цикл с условием - C++
1. Составить программу вычисления суммы первых 10 непарных чисел 2. Дано числовой ряд и некоторое число "епсила". Найти сумму...

17
diagon
Higher
1932 / 1198 / 49
Регистрация: 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
Эксперт С++
2850 / 1785 / 144
Регистрация: 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
1932 / 1198 / 49
Регистрация: 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
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 20:33 #5
diagon, Потому что компы сейчас мощные и выполняют такие операции очень быстро. Откуда ж тут разнице то взяться? Всего-навсего цикл + проверка на совпадение условию..
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:35 #6
Я поставил условие на первые 100000 чисел.
И у asics цикл проверяет каждое число на кратность девяти и последнюю цифру, у меня же банально увеличивает i на 90 и выводит ее.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 20:38 #7
diagon, Ну и на сколько разница? Чем проверяли? Да и какой смысл зацикливаться на оптимизации, которая в данном случае уж точно никому не нужна?

Знаете закон преждевременной оптимизации? Он звучит просто.
Не делай этого!
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:39 #8
Секундумером на наручных часах=) В обоих случаях приблизительно 8 секунд, разницы нету.
Я сейчас динамическое программирование изучаю. Какой от него смысл в таком случае?
0
neske
1505 / 872 / 84
Регистрация: 26.03.2010
Сообщений: 2,987
01.05.2011, 20:46 #9
Цитата Сообщение от diagon Посмотреть сообщение
Я сейчас динамическое программирование изучаю. Какой от него смысл в таком случае?
Это отдельный способ решения задач в олимпиадном программировании, причем очень полезный.
Только я не пойму, зачем вы привели это сюда.
Зачем рекурсия ? (подобный вопрос).
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:49 #10
Ну смотри, казалось бы, в первое случае одна итерация цикла выполняется меньше времени, во втором больше. В первом случае итераций происходит в 90 раз меньше, чем во втором. И тем не менее, скорость работы программ равна. Зачем нужно оптимизировать программу по времени, если нету эффекта?
Насчет рекурсии интересный вопрос, я могу сказать только, что это красивее, так как по скорости значительно проигрывает линейному перебору.
Цитата Сообщение от neske Посмотреть сообщение
Только я не пойму, зачем вы привели это сюда.
Ну это есть не что иное, как динамическое программирование. Зачем выполнять проверку для каждого числа больше ста, если все эти числа-арифметическая последовательность?
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,386
Записей в блоге: 2
Завершенные тесты: 1
01.05.2011, 20:49 #11
diagon, тут еще вот какое дело - не факт, что компилятор скомпилировал код именно в таком виде, как он выглядет в С (компилятор мог оптимизировать код, по своему усмотрению, в т.ч. сделать ф-цию inline). Нужно посмотреть ассемблерный код, что бы понять в чем дело.
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 20:51 #12
diagon, Олимпиадные задачи обычно не столь тривиальны и там действительно нужно динамическое программирование или другие пути, но никак не в лоб.
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:53 #13
Цитата Сообщение от Kastaneda Посмотреть сообщение
diagon, тут еще вот какое дело - не факт, что компилятор скомпилировал код именно в таком виде, как он выглядет в С (компилятор мог оптимизировать код, по своему усмотрению, в т.ч. сделать ф-цию inline). Нужно посмотреть ассемблерный код, что бы понять в чем дело.
Компиляторы, конечно, нынче умные пошли, но в данном случае практически разные алгоритмы.
diagon, Олимпиадные задачи обычно не столь тривиальны и там действительно нужно динамическое программирование или другие пути, но никак не в лоб.
Знаю, бывал на таких=)
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,386
Записей в блоге: 2
Завершенные тесты: 1
01.05.2011, 20:58 #14
Цитата Сообщение от diagon Посмотреть сообщение
но в данном случае практически разные алгоритмы.
Ну и что? Тут вообще цикл с заранее известными константами, компилятор мог это все превратить в :
C
1
2
3
4
5
printf(...);
printf(...);
printf(...);
printf(...);
//и так 10 раз
2
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 21:01 #15
Т.е. он самостоятельно нашел последовательность? Забавно...
0
01.05.2011, 21:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2011, 21:01
Привет! Вот еще темы с ответами:

заменить цикл for на цикл while - C++
#include &lt;iostream&gt; using namespace std; int main() { int N, M, sum; cout &lt;&lt; &quot;Введите число N:&quot; &lt;&lt; endl; ...

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

Программирование на С - C++
Может кто помочь составить код по заданию ? &quot;Написать программу,которая проверяла бы ,упорядочен ли массив по неубыванию (хi&lt;=xi+1), ...

программирование на С - C++
номер 223 д) спасибо большое заранее


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

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

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