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

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

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

 
 Ответить  Открыть новую тему 
> Задача с матрицами., Крайне геморная :(
сообщение
Сообщение #1


Новичок
*

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

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


Задача:
Вводится матрица MR(n,m) с двузначными числами. Сформировать новую матрицу RM(m,n) в которой:
а) в элементах, где первая цифра больше второй выполнить перестановку цифр.
б) элементы, где цифры равны, забить пробелами
в) остальные числа представить сочетанием двух букв, номер которых в алфавите соответствует значению цифры.
Обе матрицы вывести.

Может кто-нибудь подсказать, как это выполнить?.. Особенно меня интересует пункт В. Если не трудно, напишите пожалуйста(только попроще, без процедур, функций и так далее)программу. Или хотя бы опишите как можно выполнить тот или иной пункт. Буду крайне благодарен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Особенно меня интересует пункт В

var
RM: array[1 .. n, 1 .. m] of string[2]; { <--- Если хочешь "забивать пробелами" }

{ тут - пункты А и Б }
...
else begin
RM[i, j][1] := chr(ord('A') + (MR[i, j] div 10));
RM[i, j][2] := chr(ord('A') + (MR[i, j] mod 10));
end;


Достаточно просто? Даже не стал усложнять дополнительным циклом... То же самое касается и остальных пунктов. Как обращаться к отдельной цифре я показал, как сравнивать отдельные цифры между собой - тоже должно быть понятно...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 15.12.2007 19:27) *

var
RM: array[1 .. n, 1 .. m] of string[2]; { <--- Если хочешь "забивать пробелами" }

{ тут - пункты А и Б }
...
else begin
RM[i, j][1] := chr(ord('A') + (MR[i, j] div 10));
RM[i, j][2] := chr(ord('A') + (MR[i, j] mod 10));
end;


Достаточно просто? Даже не стал усложнять дополнительным циклом... То же самое касается и остальных пунктов. Как обращаться к отдельной цифре я показал, как сравнивать отдельные цифры между собой - тоже должно быть понятно...


Спасибо за помощь! Попробую написать, надеюсь получится =) Опыта к сожалению еще мало sad.gif Я зеленый новичок в программирование, так что, если буду задавать тупые вопросы, прошу не казнить smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


Пытаюсь разобраться с этой прогой, пытаюсь написать... С первым пунктом были проблемы... Щас вроде все сделал. Извините, за беспокойство и кучу редактирований сообщения. (уже 4-ый раз редактирую)

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


Новичок
*

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

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


Так-с, а вот щас реально проблема... Писал код, в итоге выполнил 2 пункта, все как надо... С третьим запоролся.. Даже не знаю, что и делать. Голова плохо варит сейчас sad.gif Вот код:

uses crt;
var
mr : array[1..10,1..10] of string[2];
rm : array[1..10,1..10] of string[2];
i,j : integer;
m,n : integer;
error : integer;
k : integer;
Begin
clrscr;
readln(n);
readln(m);
readkey;
for i:=1 to n do
for j:=1 to m do begin
Writeln('mr[',i,j,']=');
read(mr[i,j]);
End;
for i:=1 to n do begin
for j:=1 to m do begin
write(mr[i,j]:3);
End;
Writeln;
End;
for i:=1 to n do begin
for j:=1 to m do begin
if mr[i,j][1]>mr[i,j][2] then begin
mr[i,j][1]:=rm[i,j][2];
mr[i,j][2]:=rm[i,j][1];
End
else begin
if mr[i,j]=mr[i,j] then begin
mr[i,j]:=rm[i,j];
rm[i,j]:='';
End;
End
else begin
rm[i,j][1]:=chr(ord('A')+(mr[i,j]);{вот тут вся и загвоздка type mismatch}
rm[i,j][2]:=chr(ord('A')+(mr[i,j]);{что можно сделать - я без понятий}
End;
readkey;
End;
Writeln;
end;
Readkey;
End.

Вот, проблема в массиве MR. Но вот только как её решить :\ Если массив MR делать как integer, тогда я не могу присвоить значения из него в массив RM. Исправьте ошибку, а еще лучше направьте на путь истинный. smile.gif Ой-ой-ой... я тут внимательно посмотрел... я тут такого понаделал.. такая ересь.. Столько ошибок. Ну, да ладно, суть не в этом. Как сделать так, чтобы можно из массива MR(типа integer) заносить нужные значения в массив RM(тип string)?

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


просто человек
******

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

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


нашла у себя в залежах на винте...
кто писал - не помню, так что никаких гарантий. вроде работает.
program bukvocifry;
uses crt;
var
MR,RM:array[1..100,1..100] of string[2];
i,j,n,m,proverka,error:integer;
begin
clrscr;
writeln('m?');
readln(m);
while (m>100) or (m<1) do
begin
writeln('1<m<100!');
readln(m);
end;
writeln('n?');
readln(n);
while (n>100) or (n<1) do
begin
writeln('1<n<100!');
readln(n);
end;
for i:=1 to n do
for j:=1 to m do
begin
writeln('vvedite element [',i,' ',j,']. uchityvaetsya 2 pervyh simvola');
readln(MR[i,j]);
while length(MR[i,j])<>2 do
begin
writeln('dogovarivalis o dvuznachnyh... davaite drugoe chislo!');
readln(MR[i,j]);
end;
{I-}
val(MR[i,j],proverka,error);
{I+}
while error<>0 do
begin
writeln('eto ne chislo! davaite drugoe');
readln(MR[i,j]);
{I-}
val(MR[i,j],proverka,error)
{I+}
end;

if MR[i,j][1]>MR[i,j][2] then
RM[i,j]:=MR[i,j][2]+MR[i,j][1]
else
if MR[i,j][1]=MR[i,j][2] then
RM[i,j]:=' '
else
RM[i,j]:=char(ord(MR[i,j][1])+79)+char(ord(MR[i,j][2])+79); {79 - это код А}
end;
clrscr;
for i:=1 to n do
begin
for j:=1 to m do
write(MR[i,j]:2,' ');
write(' ');
for j:=1 to m do
write(RM[i,j]:2,' ');
writeln;
end;
readln;
end.



что касается твоих ошибок - там несовместимость типов...
надо коды складывать, а не код с символом.
и со скобками что-то не то.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


Спасибо большое. Щас, попытаюсь вникнуть в это. Не очень пока что понятно, ну да ладно.. Мож пойму)) Уже трое суток не сплю :\ Голова ни к черту.. А как можно заполнить случайными числами string-массив? Все, кажись разобрался!(спасибо бутерброду! :D )

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

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

 





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