Помощь - Поиск - Пользователи - Календарь
Полная версия: ПОМОГИТЕ! SOS! Нужны коментарии к решенным задачам
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ferre
{9.15. Дана матрица размером п х т. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент (или один из них) оказался в верхнем левом углу.}

uses crt;
var a:array[1..5,1..5] of integer;
i,j,o,y:integer;
begin
randomize;
for i:=1 to 5 do begin
for j:=1 to 5 do begin
a[i,j]:=random(100);
write(a[i,j],' ');
if (j=5) then writeln(' ');
end; end;
for j:=1 to 5 do
for i:=1 to 5 do
if a[i,j]<=a[i,j] then begin
o:=a[1,j];
if a[i,j]>o then begin
y:=a[i,j];
a[i,j]:=o;
a[1,j]:=y;
end;
end;
writeln(' ');
i:=1;
for j:=1 to 5 do
if a[i,j]<=a[i,j] then begin
o:= a[i,1];
if a[i,j]>o then begin
y:=a[i,j];
a[i,j]:=o;
a[i,1]:=y;
end;end;
for i:=1 to 5 do begin
for j:=1 to 5 do begin
write(a[i,j],' ');
if (j=5) then writeln(' ');
end;end;
readln;
end.


{10.1. Даны матрицы А и В размера k*m и m*1 соответственно. Найти произведения АВ.}

Program R10_Z1;
uses Crt;
Var
A,B,C:array [1..10,1..10] of integer;
k,m,n:byte;
I,J,X: integer;
Begin
ClrScr;
Write('Введите размерности массивa A (k m) ');
readln(k,m);
write('Введите кол-во столбцов в массиве В ');
readln(n);
randomize;

{if m<>n then writeln('Введены не корректные данные')
else begin }
for i:=1 to k do {Массив А}
for j:=1 to m do
A[i,j]:=random(3);

writeln;
writeln('Массив A ');
for i:=1 to k do begin
for j:=1 to m do
write(A[i,j]:4);
writeln;
end;
writeln; {конец А}

for i:=1 to m do {Массив B}
for j:=1 to n do
B[i,j]:=random(3);

writeln('Массив B ');
writeln;
for i:=1 to m do
begin
for j:=1 to n do
write(B[i,j]:4);
writeln;
end;
writeln; {конец В}

for I:=1 to k do {решение}
for J:=1 to n do
begin
C[I,J]:=0;
for X:=1 to n do
C[I,J]:=C[I,J]+A[I,X]*B[X,J];
end;

writeln('Ответ'); {вывод ответа}
for i:=1 to k do
begin
writeln;
For J:=1 to n do
write (C[I,J]:10)
end;
{end; }
end.

{11.5. первые вхождения букв в текст, сохраняя их исходный взаимный порядок.}

uses crt;
var s:string;
i,h,n: integer;
begin
writeln('введите строку ');
readln(s);
for i:=1 to length(s) do
begin
if s[i]='.' then
break
end;
for h:=1 to i do begin write(s[h]);
end;
readln;
end.

{11.1. Дан текст из строчных латинских букв, за которым следует точка. Определить, каких букв – гласных (a, e, i, o, u) или со-гласных – больше в этом тексте. }

program R11_Z1;
uses Crt;
var G,S: set of char;
Txt:string;
n,i,gk,sk:byte;
begin
ClrScr;
G:=['a','e','y','u','i','o'];
S:=['q','w','r','t','p','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m'];
writeln('Введите текст');
readln(Txt);

for i:=1 to length(Txt) do
if Txt[i]='.' then n:=i;

for i:=1 to n do
begin
if Txt[i] in G then gk:=gk+1;
if Txt[i] in S then sk:=sk+1;
end;
writeln('гл: ',gk:2,' согл: ',sk:2);
if gk>sk then write('Гласных букв больше');
if gk<sk then write('Согласных букв больше');
if gk=sk then write('Кол-во гласных и согласных букв равно');
end.
amega
пока не увидили модераторы и администраторы форума прочитайте п 4, п 5, п 6 правил.

{11.5. первые вхождения букв в текст, сохраняя их исходный взаимный порядок.}

uses crt;
var 
s:string;
i,h,n: integer;
begin
writeln('введите строку ');
readln(s);
for i:=1 to length(s) do {пока не конец строки проверяем каждый символ}
begin
if s[i]='.' then {если очередной символ "." значит выход и цикла}
break
end;
for h:=1 to i do begin write(s[h]); {выводится на экран строка до точки}
end;
readln;
end.


{11.1. Дан текст из строчных латинских букв, за которым следует точка. Определить, каких букв – гласных (a, e, i, o, u) или со-гласных – больше в этом тексте. }

program R11_Z1;
uses Crt;
var G,S: set of char;
Txt:string;
n,i,gk,sk:byte;
begin
ClrScr;
G:=['a','e','y','u','i','o']; {мн-во гласных букв}
S:=['q','w','r','t','p','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m']; {мн-во согласных}
writeln('Введите текст');
readln(Txt);

for i:=1 to length(Txt) do {идем в цикле и запоминаем позиции точки}
if Txt[i]='.' then n:=i;

for i:=1 to n do {прохом в цикле и считаем количество }
begin
if Txt[i] in G then gk:=gk+1; {увеличиваем на 1 если гласная}
if Txt[i] in S then sk:=sk+1; {ув на 1 если согласная}
end;
writeln('гл: ',gk:2,' согл: ',sk:2);
if gk>sk then write('Гласных букв больше');
if gk<sk then write('Согласных букв больше');
if gk=sk then write('Кол-во гласных и согласных букв равно');
end.	



в этой задачи можно(нужно) по другому проверять:

while Txt[i]<>'.' do 
  begin
  if Txt[i] in G then gk:=gk+1;
  if Txt[i] in S then sk:=sk+1;
  end;
 

Archon
Цитата
while Txt[i]<>'.' do 
  begin
  if Txt[i] in G then gk:=gk+1;
  if Txt[i] in S then sk:=sk+1;
  end;
Если на первой итерации условие истинно, то цикл никогда не закончится. Не стоит советовать непроверенный код.
Lapp
Цитата(amega @ 29.06.2009 21:02) *
пока не увидили модераторы и администраторы форума прочитайте п 4, п 5, п 6 правил.
Ок, увидели наконец. Образцово-показательное
 ! 
ЗАКРЫТИЕ


Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.