1 / 1 / 0
Регистрация: 04.04.2011
Сообщений: 12
1

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

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

Author24 — интернет-сервис помощи студентам
Найти 10 первых натуральных чисел, оканчивающихся на цифру 7, кратных числу 9 и больших 100
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2011, 19:38
Ответы с готовыми решениями:

Многопоточное программирование: как распараллелить цикл?
Здравствуйте, господа. Возможно, я сейчас спрошу глупость, но тем не менее. В интернетах найти...

Программирование циклических алгоритмов (цикл с параметром)
Помогите пожалуйста!!!

Программирование циклических процедур. (Цикл While, Repeat)
Разработать программу табулирования функции, вывести их значения на экран. Разработать два варианта...

Программирование алгоритмов циклической структуры ( цикл с предусловием и постусловием )
S=x^3/3 - x^5/15 + … +〖(-1)〗^(n+1) * x^(2n+1)/(4n^2-1) + … Значение 0,3 Точность...

17
Higher
1953 / 1219 / 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
Freelance
Эксперт С++
2891 / 1826 / 356
Регистрация: 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
Higher
1953 / 1219 / 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
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.05.2011, 20:33 5
diagon, Потому что компы сейчас мощные и выполняют такие операции очень быстро. Откуда ж тут разнице то взяться? Всего-навсего цикл + проверка на совпадение условию..
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:35 6
Я поставил условие на первые 100000 чисел.
И у asics цикл проверяет каждое число на кратность девяти и последнюю цифру, у меня же банально увеличивает i на 90 и выводит ее.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.05.2011, 20:38 7
diagon, Ну и на сколько разница? Чем проверяли? Да и какой смысл зацикливаться на оптимизации, которая в данном случае уж точно никому не нужна?

Знаете закон преждевременной оптимизации? Он звучит просто.
Не делай этого!
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:39 8
Секундумером на наручных часах=) В обоих случаях приблизительно 8 секунд, разницы нету.
Я сейчас динамическое программирование изучаю. Какой от него смысл в таком случае?
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
01.05.2011, 20:46 9
Цитата Сообщение от diagon Посмотреть сообщение
Я сейчас динамическое программирование изучаю. Какой от него смысл в таком случае?
Это отдельный способ решения задач в олимпиадном программировании, причем очень полезный.
Только я не пойму, зачем вы привели это сюда.
Зачем рекурсия ? (подобный вопрос).
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:49 10
Ну смотри, казалось бы, в первое случае одна итерация цикла выполняется меньше времени, во втором больше. В первом случае итераций происходит в 90 раз меньше, чем во втором. И тем не менее, скорость работы программ равна. Зачем нужно оптимизировать программу по времени, если нету эффекта?
Насчет рекурсии интересный вопрос, я могу сказать только, что это красивее, так как по скорости значительно проигрывает линейному перебору.
Цитата Сообщение от neske Посмотреть сообщение
Только я не пойму, зачем вы привели это сюда.
Ну это есть не что иное, как динамическое программирование. Зачем выполнять проверку для каждого числа больше ста, если все эти числа-арифметическая последовательность?
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
01.05.2011, 20:49 11
diagon, тут еще вот какое дело - не факт, что компилятор скомпилировал код именно в таком виде, как он выглядет в С (компилятор мог оптимизировать код, по своему усмотрению, в т.ч. сделать ф-цию inline). Нужно посмотреть ассемблерный код, что бы понять в чем дело.
1
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.05.2011, 20:51 12
diagon, Олимпиадные задачи обычно не столь тривиальны и там действительно нужно динамическое программирование или другие пути, но никак не в лоб.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 20:53 13
Цитата Сообщение от Kastaneda Посмотреть сообщение
diagon, тут еще вот какое дело - не факт, что компилятор скомпилировал код именно в таком виде, как он выглядет в С (компилятор мог оптимизировать код, по своему усмотрению, в т.ч. сделать ф-цию inline). Нужно посмотреть ассемблерный код, что бы понять в чем дело.
Компиляторы, конечно, нынче умные пошли, но в данном случае практически разные алгоритмы.
diagon, Олимпиадные задачи обычно не столь тривиальны и там действительно нужно динамическое программирование или другие пути, но никак не в лоб.
Знаю, бывал на таких=)
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
01.05.2011, 20:58 14
Цитата Сообщение от diagon Посмотреть сообщение
но в данном случае практически разные алгоритмы.
Ну и что? Тут вообще цикл с заранее известными константами, компилятор мог это все превратить в :
C
1
2
3
4
5
printf(...);
printf(...);
printf(...);
printf(...);
//и так 10 раз
2
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 21:01 15
Т.е. он самостоятельно нашел последовательность? Забавно...
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
01.05.2011, 21:04 16

Не по теме:

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



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

Не по теме:

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

1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
01.05.2011, 22:02 17
Специально скачал Devcpp, отключил там всю оптимизацию... Обе проги работают в 2 раза быстрее чем на билдере(о_О), но тоже одинаковое количество времени.
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
01.05.2011, 22:06 18
diagon, Откровенно говоря компилятор вообще многое может сделать на стадии компиляции. Факториал посчитать к примеру.
1
01.05.2011, 22:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2011, 22:06
Помогаю со студенческими работами здесь

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать...

Цикл с предусловием, цикл с постусловием и цикл с параметром
Объясните пожалуйста как делать эти циклы. У меня не получается. Можете сделать как на фото, или на...

Программирование одномерных массивов. Программирование двумерных массивов. Программирование динамических массивов VBA
1. Написать процедуру по упорядочению элементов заданного массива В в следующем порядке: сначала...

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


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

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

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