IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Операции над цифрами в числе
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Алена

Репутация: -  0  +


Стыдно, но сама не решу, выручите пожалуйста!

Дано натуральное число n. Выяснить входит ли цифра 3 в запись числа n^2, и если нет, то поменять порядок цифр числа n на обратный, в противном случае приписать единицу в начало числа n.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


А есть наработки, или хотя бы идеи?Нужно ли использовать файлы или нет?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Алена

Репутация: -  0  +


Я думаю циклические алгоритмы.?Подходит?

Добавлено через 9 мин.
А можно взять оператор отбора.Только все равно мысли по-поводу начала есть,а дальше ступор(

VAR
a,b,c:integer;
BEGIN
writeln('Введите число n:'); readln(n);
case n of {начало оператора выбора}
НЕЗНАЮ КАК ПРАВИЛЬНО НАПИСАТЬ
else writeln('Введеное число не имеет цифры 3');
end; {конец оператора выбора}

ДАЛЬШЕ ТОЖЕ НЕ ЗНАЮ(

Сообщение отредактировано: Lexa15 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Эм давайте поподробнее.Вот вы ввели число,что вам надо сделать? вам надо это число везвести в квадрат.Затем есть несколько путей:Первый, перейти к использованию символьных переменных и работать с символами, второй,остаться с числовыми переменными,а третий использовать файлы,но для данной задачи не рентабельно.Определитесь,как вы хотите,ну или как вас уже должны были научить это делать.

Case совершенно не то,что нужно использовать,но мы до этого дойдем.Case занимаеться обработкой исключений,а не организацией циклов.Это немного другое.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Алена

Репутация: -  0  +


А как лучше с числовыми или с символьными?

Добавлено через 1 мин.
А можно поугадываю?Уместным будет оператор REPEAT?)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Принципи бер разницы, так же без разницы repeat или while.
Рассмотрим пример с числовыми переменными.
Цитата
Выяснить входит ли цифра 3 в запись
ведь не всказано с какой стороны числа начинать.
Мы начнем с конца,есть две функции Div,Mod.Div возвращает часное от деления 2 чисел. Mod возвращает остаток.
Что мы будет делать в Цикле мы будет делить на 10 до тех пор,пока часное от деления не станет равно нулю.А как же мы будет узнавать равно число 3 или нет.Мы будет брать остаток и смотреть равен ли он 3.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Алена

Репутация: -  0  +


А почему именно на 10?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Case занимаеться обработкой исключений

В перлы форума.

> А можно поугадываю?Уместным будет оператор REPEAT?)

Для чего? Уместной будет процедура Str для перевода числа в строку. Для возведения числа в квадрат не надо ничего.
Потом можно будет перебрать символы строки через FOR (for i := 1 to Length(S) do if S[i] = '3' then...)


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Алена

Репутация: -  0  +


"Уместной будет процедура Str для перевода числа в строку"-а как это правильно записать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Str(x, S) преобразует число x в строковый формат. Здесь x – любое числовое выражение, S – строковая переменная.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Алена

Репутация: -  0  +


Я бессовестная, догадываюсь, но можете написать полное решение написать ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Как вариант,но с численными переменными.

var
n:longint;
flag: boolean;
begin
readln(n);
n:=n*n;
writeln(n);
while (n<>0) and (Flag=False) do
begin
if (n mod 10=3) then begin
flag:=True;
end
else
begin
n:=n div 10;
writeln(n);
end;
end;
writeln(flag);
readln;
end.


Проверил пару примеров,вроде нормально,найдете ошибку скажете.В переменной флаг храниться ответ на вопрос,есть ли значение в данном числе или нет.

Осталось только сделать то,что просят,тобишь добавить единицу,или перевернуть.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13





Группа: Пользователи
Сообщений: 9
Пол: Женский
Реальное имя: Алена

Репутация: -  0  +


Большое человеческое! А я сегодня проведу ночь над учебником!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Да здесь дело не в учебнике,он вам максимум раскажет как пользоваться Div,Mod, ну и приведет пару примеров.Просто надо понять,что хотят и как это можно сделать.Сначала вы придумываете алгоритм.Потом думаете,как его можно реализовать и какими средставми языка пользоваться.Вот например,как можно перевернуть число или приписать в начало единицу? Здесь вариантов уйма.Первый, записываем число в строку,смотрим сколько символов в строке,а затем домножаем наше число на 10^(кол-о посчитанных символов).Второй, можно сделать это через сложение 2 строк,третий,можно вообще не пользоваться строковыми переменными,и сначала делить и запоминать числа в массив, а потом уже сформировать само число.Если запоминать массив во время работы того кода,что я показал,то перевернуть число и добавить единицу будет весьма просто,если последовательно все делать,то просто будет немного медленнее.Но это уже вопросы оптимизации,а это не так важно для вас щас.

Сообщение отредактировано: Krjuger -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> while (n<>0) and (Flag=False) do

Два вопроса:
1. Зачем писать Flag=False, если правильнее писать not Flag?
2. А это уже не придирка к стилю, а всерьёз. Ты переменную Flag инициализировал? Нет? Тогда лови глюки.



--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Блин,совсем забыл,ведь и вправду без строгой инициализации нельзя гарантировать,что флаг будет инициализироваться False(((
Короче надо довабить

begin
flag:=false;
readln(n);
........


Насчет первого пункта спорить смысла нет,просто мне так непривычно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Насчет первого пункта спорить смысла нет,просто мне так непривычно.

Привыкай делать без лишних слов, а то народ не поймёт.
Писать f=false вместо not f это всё равно, что писать i+0 или i*1 вместо i


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 18:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name