![]() |
Помогите пожайлуста со сложными циклами
С клавиатуры вводится двузначное число, среди всех четырехзначных чисел вывести те, которые начинаются или заканчиваются этим числом.
Как мне сделать цикл что бы он проверял и 1-ю цифру, а не только 2-ю? вот моя программа(Я взял пока что числа поменьше): |
nekitosiks, так, давай чуть назад и с азов.
Для того, чтобы тебя понимали, не поленись оформить код тегом CODE, # ---- Теперь рассказывай, что ты придумал? Своими словами. Вариант "Код хорошо документирован на языке С++" не подходит. У меня такое ощущение, что ты занимаешься глупостью. Или может не глупостью, но не в ту сторону. Это нормальный ход событий, каждый этим время от времени страдает. Сейчас спокойненько сядь, напиши, зачем тебе нужны сравнения 1ой, 2ой, и других цифр. Цитата:
---- Порядок изложения мыслей: Цель, задачи, как решаются, возникающие расхождения (ошибки), выводы. Цель: Полная постановка задачи. Задачи: Циклы, сравнения и т.п. Т.е. декомпозиция задачи на составляющие. Решения: Чётко "провязанное" решение каждой задачи Расхождения: Так же "провязанные" сложности в том или ином действии Выводы: a) Собственные рассуждения б) Привыкай делать выводы. Работы без выводов уходят в урну, просто без раздумий (да, возможно жестоко, но это так). |
Сравнения 1-го и 2-го с вводимым числом мне нужно для нахождения подходящих чисел.
Если я введу число 7, то программа должна вывести: 17, 27,37,47,57,67,77,87,97,(эти числа получилось вывести) ну и 70,71,72,73,74,75,76,78,79(эти числа не получилось вывести) |
Цитата:
Если это необходимо "в процессе решения", то на данный момент этот шаг не обоснован. (читай "снимается с рассмотрения") Цитата:
Без обид. Учись объяснять предпосылки и прогнозировать последствия. Старайся следовать предложенной схеме. Это в первую очередь тебе поможет привести мысли в порядок. Т.е. это не я тут такой вредный и спрашиваю какую-то околесицу, я помочь пытаюсь! :) |
Вложений: 1
Для большей ясности скину сами задания вместе с "теорией", которые нам задали. 2 курс программист.
Я сам не в восторге как нас учат... Задают нам по 4 задания, я остановился на сложных циклах 3 лабораторной 13 задание |
Деление на 10 является правильной идеей - в том коде, который закомментирован. В массиве из четырех элементов можно сохранять получившиеся значения. И в этом массиве искать значения из массива из двух элементов, в котором сохранены цифры двухзначного числа.
|
Цитата:
Допустим ввели число 27 Среди прочих 4-значных чисел есть: 1234, 3456, 2345, 2745, 4572, 2678, 7432 Что нужно вывести? Числа начинающиеся на 27 или начинающиеся и заканчивающиеся на 2? В итоге будет создан динамический массив array с размером равным количеству чисел в введённом числе и в этом массиве будет сохранено число поразрядно - 4357 Код:
array[0] = 4; Код:
#include <iostream> |
Цитата:
К сожалению я до масивов не добрался, и не знаю что это |
nekitosiks, Так если в условии прямо сказано, введено двухзначное число и нужно сравнить с четырёхзначным, что мешает сделать примитивно? Я там сравниваю с прямым числом 27 (переменная num), но это в качестве примера, вместо 27 можно поставить переменную с введённым.
Код:
#include <iostream> |
Вчера до форума не добрался ...
У меня другая мысль появилась. А зачем нам вообще ~9000 (1000 - 9999) сравнений, причем с двумя делениями в каждом цикле! Деление с т.з. процессора штука не простая. Если оптимизирующий компилятор догадается, то он объединит инструкции в одну, а если нет? Ответов у нас около 200 (грубо). Вида ХХСС и ССХХ Где CC -- заданная двухзначная константа, ХХ -- некая переменная часть числа. Нас не просят найти/сформировать массив/выбрать из заданного/и т.п. нас просят "вывести". И сделать соотв. два цикла 10-99 и подписать введенное числа либо спереди, либо с сзади. ---- nekitosiks, очень жаль, что предложенной схемой рассуждений вы так и не воспользовались. |
Мне кажется что это даже легче выйдет. Если я правильно понял, то тут нужно воспользоваться способом соединения чисел, а не разделения. Но я не знаю как это сделать. Я чайник и самое сложное что я знаю, это цикл.
|
Цитата:
Кстати умножение, является более простой операцией, нежели деление, т.к. сводится либо к сложению, либо к умножителю, позволяющему произвести операцию за 1-3 такта на современных процессорах. (Для верности надо уточнить в пару-тройке спецификаций) А если брать работу со строками ... |
Спасибо, догадался. Вот программа:
Код:
using namespace std; |
Время: 11:51. |
Время: 11:51.
© OSzone.net 2001-