XeXe
|
|
« : 23 Сентябрь 2007, 00:15:18 » |
|
Помогите пожалуйста написать программу: "Дано натуральное число n (n<=9999). Верно ли, что это число содержит ровно три одинаковые цифры, как, например, числа 6676, 4544…" П О Ж А Л У Й С Т А
|
|
|
Записан
|
Переустановка программ, Windows, антивирус. Быстрый выезд. Тел. 8-033-623-01-01 (МТС).
|
|
|
maxposedon
|
|
« Ответ #1 : 23 Сентябрь 2007, 01:00:09 » |
|
А давай свои лабы/домашние задания ты будешь делать сам?
|
|
|
Записан
|
|
|
|
medic
кампуцерны дохтар
Кандидат в депутаты
Репутация: +127/-2
Offline
Пол:
Сообщений: 3422
За Беларусь!
|
|
« Ответ #2 : 23 Сентябрь 2007, 10:27:54 » |
|
с тибя + а можно и не один
program c4et; var a: array[1..4] of integer; x,y,i,j:integer; begin writeln('vvedite chislo(100-9999) '); read(x); for i:= 1 to 4 do begin a:= x mod 10; x:= x div 10; end; y:=1; for i:= 1 to 4 do begin for j:= 1 to 4 do begin if i<>j then begin if a=a[j] then y:=y+1; end; end; if y=3 then begin writeln('verno '); exit; end; y:=1; end; writeln('neverno'); end.
|
|
« Последнее редактирование: 23 Сентябрь 2007, 14:14:52 от medic »
|
Записан
|
Уронили Siemens на пол сименс цел, пол поцарапан
|
|
|
RILLey_ELf
Гость
|
|
« Ответ #3 : 23 Сентябрь 2007, 12:16:56 » |
|
хм сча проверим...
короче введи число "9" которое является натуральным и < 9999 и узнай отрок то в нём три одинаковых числа
medic иди лечи людей с таким кодом как у тебя или с таким подходом как у тебя (лишние begin end не тру подход короче тебе однозначно можно много минусов ставить
|
|
« Последнее редактирование: 23 Сентябрь 2007, 12:28:09 от RILLey_ELf »
|
Записан
|
|
|
|
medic
кампуцерны дохтар
Кандидат в депутаты
Репутация: +127/-2
Offline
Пол:
Сообщений: 3422
За Беларусь!
|
|
« Ответ #4 : 23 Сентябрь 2007, 14:05:38 » |
|
бред сивой кобылы: 1. что вводишь то и получаешь та написанно ведь пределы какие, а лишнее усложнение кода здесь никчему проше поставить условие....... читай 2. 2. минимальным целым числом содержашим 3 одинаковые цифры может быть только 111 3. 'Лишние' begin, end не есть признак не знания, хе на мой взгляд так код проще читать и отлаживать (из опыта, кога условия такие что пипец это четко читаемые границы и всякие ; я не очень люблю) 4. писал 2 мин. прямо сдесь проверял что работает так что не нравится напиши сам а всякие истерические крики по поводу и без повода фф топку 5. чем мой подход не нравится?
|
|
« Последнее редактирование: 23 Сентябрь 2007, 14:13:11 от medic »
|
Записан
|
Уронили Siemens на пол сименс цел, пол поцарапан
|
|
|
maxposedon
|
|
« Ответ #5 : 23 Сентябрь 2007, 17:01:03 » |
|
бред сивой кобылы: 1. что вводишь то и получаешь та написанно ведь пределы какие, а лишнее усложнение кода здесь никчему проше поставить условие....... читай 2. 2. минимальным целым числом содержашим 3 одинаковые цифры может быть только 111 3. 'Лишние' begin, end не есть признак не знания, хе на мой взгляд так код проще читать и отлаживать (из опыта, кога условия такие что пипец это четко читаемые границы и всякие ; я не очень люблю) 4. писал 2 мин. прямо сдесь проверял что работает так что не нравится напиши сам а всякие истерические крики по поводу и без повода фф топку 5. чем мой подход не нравится? /me ржот, особенно забавлеет пункт 1,2 и 4 в этом сообщении, учитывая, что в исходном коде 1000 на 100 изменилось совсем недавно. (SeeED же комментировал тот, вариант где было 1000)
|
|
« Последнее редактирование: 23 Сентябрь 2007, 17:09:30 от maxposedon »
|
Записан
|
|
|
|
medic
кампуцерны дохтар
Кандидат в депутаты
Репутация: +127/-2
Offline
Пол:
Сообщений: 3422
За Беларусь!
|
|
« Ответ #6 : 23 Сентябрь 2007, 20:51:35 » |
|
от редакции 1000 на 100 (условине недоглядел) программа работать по другому не стала, а вводить 9 там где написанно 1000 - 9999 тоже наверно верх правильности, и чем тибя забовляют п 1 2 и 4?
|
|
|
Записан
|
Уронили Siemens на пол сименс цел, пол поцарапан
|
|
|
RILLey_ELf
Гость
|
|
« Ответ #7 : 24 Сентябрь 2007, 10:16:45 » |
|
от редакции 1000 на 100 (условине недоглядел) программа работать по другому не стала, а вводить 9 там где написанно 1000 - 9999 тоже наверно верх правильности, и чем тибя забовляют п 1 2 и 4? >Помогите пожалуйста написать программу: >"Дано натуральное число n (n<=9999). Верно ли, что это число содержит ровно три >одинаковые цифры, как, например, числа 6676, 4544…" П О Ж А Л У Й С Т А читай условие внимательно шейпер. где сказано что число должно быть > 100. я понимаю что додумывать чтото новое в условие супер но всё же и в сущности данные могут быть некорректны так что надо считывать string[4] (ну примерно так)
|
|
|
Записан
|
|
|
|
medic
кампуцерны дохтар
Кандидат в депутаты
Репутация: +127/-2
Offline
Пол:
Сообщений: 3422
За Беларусь!
|
|
« Ответ #8 : 24 Сентябрь 2007, 14:23:40 » |
|
ага и иметь лишний гемор с переводом val, ктото писал про лишние begin - end . этот вариант решение которое ему и нада....... ладна сделаим так program c4et; var a: array[1..4] of integer; x,y,i,j:integer; begin writeln('vvedite chislo '); {пишем} read(x); {читаем число} if x<110 then begin {проверяем чтобы число было 3х знычным} writeln('neverno'); {3 цифры только в 3х значном числе} exit; { усли меньше то выходим и пишем что неверно} end; for i:= 1 to 4 do begin {загоняем в массив цифры числа} a := x mod 10; x:= x div 10; end; y:=1; {обнуляем счетчег, 3 потомучто 1 ую цифру каждый раз не сравниваем одна у нас уже есть } for i:= 1 to 4 do begin {проверка условия о нахожденни одинаковых цифр с их подсчетом} for j:= 1 to 4 do begin if i<>j then begin if a=a[j] then y:=y+1; end; end; if y=3 then begin {проверка счетчика елси 3 то пишем верно и выходим} writeln('verno '); exit; end; y:=1; {обнуляем счетчег} end; writeln('neverno'); {если до этого не вышли значит условие невыполнено - пишем неверно} end.
типерь точно как нада... кстати что ты будешь подставлять в строку если я введу теже 9 + алгоритм сравнения будет все равно будет похожий. Лаба у человека стопудова на mod и div
PS: гладны через }|{опу не удаляют ЗЗЫ добавил пояснения
|
|
« Последнее редактирование: 24 Сентябрь 2007, 15:49:25 от medic »
|
Записан
|
Уронили Siemens на пол сименс цел, пол поцарапан
|
|
|
|
coolasm
|
Паскаля особо непомню, и нет его у меня, но так, будет, по моему, лутше
program c4et; var a: array[0..9] of integer; x,i:integer; flag:boolean; begin writeln('vvedite chislo '); {пишем} read(x); {читаем число}
for i:= 1 to 4 do begin {загоняем в массив цифры числа} inc(a[ (x mod 10)]); x:= x div 10; end;
flag:=false;
for i:=0 to 9 do begin if (a=2) then flag:=true; end;
if (flag) then writeln('est') else writeln('net')
end.
|
|
« Последнее редактирование: 24 Сентябрь 2007, 20:30:33 от coolasm »
|
Записан
|
HTTP Error 404 - File or directory not found.
|
|
|
XeXe
|
[highlight]Спасибо[/highlight] что помогли хоть как небуть!!! Ща пойду проверять...
|
|
|
Записан
|
Переустановка программ, Windows, антивирус. Быстрый выезд. Тел. 8-033-623-01-01 (МТС).
|
|
|
medic
кампуцерны дохтар
Кандидат в депутаты
Репутация: +127/-2
Offline
Пол:
Сообщений: 3422
За Беларусь!
|
2 coolasm интересный подход. вот единственно дельное предложение +1
|
|
|
Записан
|
Уронили Siemens на пол сименс цел, пол поцарапан
|
|
|
VooDoo
|
если честно, то это первое, что приходит в голову
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
medic
кампуцерны дохтар
Кандидат в депутаты
Репутация: +127/-2
Offline
Пол:
Сообщений: 3422
За Беларусь!
|
согласен НО! частенько студентам inc не дают, павда эт не страшно.... методфы решения у всех разные
|
|
|
Записан
|
Уронили Siemens на пол сименс цел, пол поцарапан
|
|
|
coolasm
|
Там походу еще надо пролверку на корректность вводимых данных сделать (либо сделать выход из цикла если х==0), ну это следствие отсутствия возможности тестирования, так как код был разработан в блокноте
|
|
« Последнее редактирование: 25 Сентябрь 2007, 18:02:49 от coolasm »
|
Записан
|
HTTP Error 404 - File or directory not found.
|
|
|
Romchik
|
2 coolasm интересный подход. вот единственно дельное предложение +1 ППц Это 1ое что приходит в голову. Остальное бред Давай еще ты домой будешь ходить через северный полюс
|
|
|
Записан
|
|
|
|
meermitka
|
В алгоритмах coolasm и medic есть неточности. Еще б знать на каком курсе и на какой специальности автор темы, чтобы выполнить это задание с учетом требований преподов.
|
|
|
Записан
|
|
|
|
VooDoo
|
inc(a[ (x mod 10)]); на сколько я помню в паскале нумерация массивов с 1 для кратного 10 получим выход за array range.
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
Tal
Гродненец
Репутация: +2/-0
Offline
Пол:
Сообщений: 105
ну и кто сказал - что будем делать?
|
Трепещите студенты (?<digit>\d{1})\d*\k'digit'\d*\k'digit'
|
|
|
Записан
|
Дурак думает, умный действует по обстоятельствам.
|
|
|
VooDoo
|
вау... человег сумел сгенерить перловый регэксп... а каким он боком к паскалю?
|
|
|
Записан
|
Are you human? - My body is. Do you feel pain? - My body does. ..- --- --- -.. --- ---
|
|
|
coolasm
|
inc(a[ (x mod 10)]); на сколько я помню в паскале нумерация массивов с 1 для кратного 10 получим выход за array range. А на сколько я помню паскаль - как укажешь так он и нумеруется (хоть с -10000 или с 5323) Да, я ж не говорил, что прога будет работать если ее просто набрать в TP (или в чем там), я лишь показал другой, более логичный способ решения. P.S. Тут так много людей способных давать советы, и так мало людей дающих решения, задача то на 5 минут (с набором текста и тестированием), ну так предоставили бы бедному студенту готовое решение.
|
|
« Последнее редактирование: 26 Сентябрь 2007, 21:11:57 от coolasm »
|
Записан
|
HTTP Error 404 - File or directory not found.
|
|
|
MergeSort
|
Такие задачки еще в школе решают...
|
|
|
Записан
|
|
|
|
Dj_NudnyJ
|
Такие задачки еще в школе решают... молодец. возьми с полки пряник.
|
|
|
Записан
|
|
|
|
Dj_NudnyJ
|
DimaFromGrodno, а откуда задачка? похожая была на олимпе толи в 8м толи в 9м классе.
|
|
|
Записан
|
|
|
|
podonak
|
хорошая задача. интересная. сначала обходом дерева находим, возможно ли достичь конечной точки. потом строим путь. обход дерева - это как бы общеизвестные алгоритмы и не очень сложные. второе - посложнее. надо другой алгоритм реализовать - возможно ли попасть из текущего положения на точку, из которой можно войти в следующий поворот. если нет - путь забраковываем. а если да - то находим его. а для всей красоты нужно второй алгоритм проверять на каждом найденном пути из первого - мало ли какой из них кратчайшим окажется. это точно задача для школы?
|
|
|
Записан
|
|
|
|
podonak
|
попутно решил себя развлечь и вспомнить паскаль. если где неправильно вспомнил - сорри. ещё одно решение первоначальной задачи. не стал упрощать уже приведённые алгоритмы (а они поддаются упрощению), а сделал ещё не приведённый здесь алгоритм (не берусь доказывать его оптимальность ;-))
var d: array [1..4] of byte; b: boolean; i, j, k: byte; x: integer; read x; if x > 9999 then writeln('error in data'); else begin bool : = false; if x >= 111 then for i := 0 to 9 do for j := 0 to 9 do if i <> j then for k := 1 to 4 do begin for l := 1 to 4 do d[l] := i; d[k] := j; if x = ((d[1] * 10 + d[2]) * 10 + d[3]) * 10 + d[4] then bool := true; end if bool then writeln('в числе три цифры одинаковы'); end;
|
|
« Последнее редактирование: 01 Ноябрь 2007, 22:22:32 от podonak »
|
Записан
|
|
|
|
Dj_NudnyJ
|
я на олимпе такую (похожую) задачу решал влоб, перебором с рекурсией. тогда прокатило, ибо не было тестов с большим полем.
|
|
|
Записан
|
|
|
|
|
maxposedon
|
А смысл тогда довать на его ссылку? Или ты что-то забыл сказать?)
|
|
|
Записан
|
|
|
|
Dj_NudnyJ
|
я забыл сказать, что пусть DimaFromGrodno сам решает задачки, а то толку нет, когда за тебя их решают другие.
а архив я выложил для доказания того, что я не просто занимаюсь флэймом, а действительно знаю как решается эта задача. если понадобится, скажу пароль.
|
|
|
Записан
|
|
|
|
podonak
|
да, действительно, можно и волновиком. зря я усложнял :-( попробую с ходу алгоритм накидать
кидаем в очередь текущее положение всем пустым полям лабиринта присваиваем значение ноль. while в очереди что-то есть do begin берём из очереди местоположение(начальное положение). толкаем его в каждую сторону и там: begin if поле > 0 then там уже были else if поле = конечному then добрались за начальное положение + 1 шагов else begin поле := начальное положение + 1 заталкиваем поле в очередь end end end
действительно несложная задача и если не усложнять как я вначале, то пойдёт и для школьников.
|
|
|
Записан
|
|
|
|
|