18.12.2010, 22:30 | #1 (permalink) |
Новичок
Регистрация: 18.12.2010
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Задачки. Паскаль АВС.
Я в паскале совсем тупая ничего непонимаю, помогите хотяб с некоторыми написать=(( буду очень длагодарна 1) Дано натуральное число N. Получить в порядке возрастания N первых натуральных чисел, которые не делятся ни на какие простые числа, кроме 2, 3 и 5. 2) Поменять местами треугольники квадратной матрицы, расположенные выше и ниже боковой диагонали. 3) В квадратной матрице найти номер строки с минимальной суммой её элементов и номер столбца с максимальной суммой элементов. Элементы найденной строки поменять местами с соответствующим элементом найденного столбца. 4) Дана строка символов. Необходимо определить в тексте позицию последнего появления определённого слова. 5) Описать, используя структуру данных запись, расписание(предмет, предподаватель, номер, группы, день недели, часы, аудитория). Составить программу определяющую, какая нагрузка у заданного предподавателя на этой недели и список групп, у которых он ведёт занятия. |
18.12.2010, 22:30 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Решение вашего вопроса должно упроститься после прочтения похожих топиков Решить задачки Турбо Паскаль или Фри Паскаль. Задание по теме Типизированный файл Задачки на массивы. Паскаль Задачки на Pascal Помогите с решением задачки |
19.12.2010, 10:46 | #2 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
1. Отселектировать числа, которые делятся ХОТЯ БЫ НА ОДНО из чисел (2, 3, 5) и не содержат никаких других простых множителей. Этому условию отвечают 2, 3, 4, 5, 6, 8, 9, 10 и т.д. Программа поиска таких чисел выглядит так: Код:
VAR N,i,m:Byte; A,B,d:LongInt; BEGIN Write('N (<256) = '); ReadLn(N); A:=0; i:=0; Repeat A:=A+1; B:=A; repeat d:=B div 2; m:=B mod 2; B:=d; until (m>0) or ((B=1) and (m=0)); If m>0 then begin B:=B*2+m; repeat d:=B div 3; m:=B mod 3; B:=d; until (m>0) or ((B=1) and (m=0)); If m>0 then begin B:=B*3+m; repeat d:=B div 5; m:=B mod 5; B:=d; until (m>0) or ((B=1) and (m=0)); end; end; If m=0 then begin Write(A:8); i:=i+1; end; Until i=N; ReadLn; END. Код:
VAR N,i,m:Byte; A,B,d:LongInt; b2,b3,b5:Boolean; BEGIN Write('N (<256) = '); ReadLn(N); A:=0; i:=0; Repeat A:=A+1; B:=A; b2:=false; b3:=false; b5:=false; repeat d:=B div 2; m:=B mod 2; if m=0 then b2:=true; B:=d; until (m>0) or ((B=1) and (m=0)); If m>0 then begin B:=B*2+m; repeat d:=B div 3; m:=B mod 3; if m=0 then b3:=true; B:=d; until (m>0) or ((B=1) and (m=0)); If m>0 then begin B:=B*3+m; repeat d:=B div 5; m:=B mod 5; if m=0 then b5:=true; B:=d; until (m>0) or ((B=1) and (m=0)); end; end; If (m=0) and b2 and b3 and b5 then begin Write(A:8); i:=i+1; end; Until i=N; ReadLn; END. |
|
19.12.2010, 13:01 | #3 (permalink) |
Новичок
Регистрация: 18.12.2010
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Ну да, 1ю задачу можно было по разному подумать, по идеи "которые делятся ХОТЯ БЫ НА ОДНО из чисел (2, 3, 5)" но тогда получается, что это все числа кроме 1, так что наверно всё таки "которые делятся ОДНОВРЕМЕННО на 2, 3 и 5". Извени, что дала такую задачку неуточнив у препода, что тут спрашивается. Вижу пришлось сильно попотеть=( Пасиб за неё.=)
Последний раз редактировалось Света=); 19.12.2010 в 13:10 |
19.12.2010, 13:57 | #4 (permalink) | ||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Цитата:
1. "Зеркально отразить" числа относительно побочной диагонали. 2. Мысленно воткнуть в самый центр матрицы ось, перпендикулярную плоскости, на которой написана матрица (неважно, попадет эта ось в элемент или нет - это зависит от четности) и, не трогая побочную диагональ, провернуть ось вместе с треугольниками на 180°. Иными словами - считать матрицу осесимметричной (где ось - побочная диагональ) или центрально-симметричной? Предлагаемая программа реализует оба способа в указанной последовательности: Код:
Const N=5; Var A,B:ARRAY[1..N,1..N] of Integer; i,j,D:Integer; BEGIN Randomize; For i:=1 to N do For j:=1 to N do begin D:=Random(10); A[i,j]:=D-5; end; WriteLn('Initial matrix:'); For i:=1 to N do begin For j:=1 to N do Write(A[i,j]:4); WriteLn; end; WriteLn('Transformed matrix (var.1):'); For i:=1 to N do For j:=1 to N do B[i,j]:=A[N-j+1,N-i+1]; For i:=1 to N do begin For j:=1 to N do Write(B[i,j]:4); WriteLn; end; WriteLn('Transformed matrix (var.2):'); For i:=1 to N do For j:=1 to N do B[i,j]:=A[N-i+1,N-j+1]; For i:=1 to N do B[i,N-i+1]:=A[i,N-i+1]; For i:=1 to N do begin For j:=1 to N do Write(B[i,j]:4); WriteLn; end; Readln; END. |
||
19.12.2010, 16:17 | #5 (permalink) |
Новичок
Регистрация: 18.12.2010
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
По идеи надо первым способом) Оставила вот так:
Program pr2; Const N=5; Var A,B:ARRAY[1..N,1..N] of Integer; i,j,D:Integer; BEGIN Randomize; For i:=1 to N do For j:=1 to N do begin D:=Random(10); A[i,j]:=D-5; end; WriteLn('Initial matrix:'); For i:=1 to N do begin For j:=1 to N do Write(A[i,j]:4); WriteLn; end; WriteLn('Transformed matrix:'); For i:=1 to N do For j:=1 to N do B[i,j]:=A[N-j+1,N-i+1]; For i:=1 to N do begin For j:=1 to N do Write(B[i,j]:4); WriteLn; end; END. Если что, покажу другой способ=) |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
19.12.2010, 18:08 | #6 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
Код:
uses crt; VAR S,W,Sbef,Saft:String; cnt,i,W_pos:byte; BEGIN Clrscr; WriteLn('Enter the string:'); ReadLn(S); WriteLn('Enter the word:'); ReadLn(W); Repeat cnt:=pos(W,S); if cnt>0 then begin W_pos:=cnt; Sbef:=copy(S,1,cnt-1); Saft:=copy(S,cnt+Length(W),Length(S)-cnt-Length(W)+1); S:=Sbef; For i:=1 to Length(W) do S:=S+'*'; S:=S+Saft; WriteLn(S); end; Until cnt=0; WriteLn('The last position of the word "'+W+'" is ',W_pos); ReadLn; end. |
|
19.12.2010, 19:28 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Так это просто останов. Без него моргнет и выскочит туда, откуда программа запускалась, да и всё, и не даст на результат посмотреть.
Да, там еще 6-я снизу строка (WriteLn(S);) - отладочная, ее нужно удалить (забыл это сделать перед выкладыванием). |
26.12.2010, 23:05 | #9 (permalink) | |
Новичок
Регистрация: 18.12.2010
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
28.12.2010, 16:35 | #10 (permalink) |
Новичок
Регистрация: 18.12.2010
Сообщений: 7
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
помогите
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|