Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 9
1

Двумерные массивы, процедура работы со строками

23.02.2010, 20:38. Показов 1301. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана матрица B (m,n) вещ - го типа, найдите мах элемент каждой строки матрицы, поменяйте местами этот элемент с диагональным, разделите все элементы строки на диагональный. Выведите преобразованную матрицу на печать. Составьте процедуру работы с каждой строкой матрицы.
---------------------------------------------
решить нужно до 25го
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.02.2010, 20:38
Ответы с готовыми решениями:

Табулирование функции и поиск данных. Одномерные массивы. Двумерные массивы
Вычислить сумму первых четырех отрицательных элементов. В соответствии с п. 5.16 правил...

Работа со строками. Функции работы со строками
Дана строка символов. В заданном тексте определить позицию первой точки ‘ . ‘.

процедура со Строками не правильно работает.
народ задание такое дан текст ! с помощью процедуры надо упорядочеть буквы по алфавиту ! оно...

Двумерные массивы
дан двумерный массив. определить: есть ли в данном массиве столбец, в котором равное количество...

12
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
24.02.2010, 08:42 2
Если речь идет о диагональных элементах, значит матрица квадратная, а условие [m,n] ошибочное или для запутывания.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
uses crt;
const nmax=20;//макс размер матрицы, можно изменить
type mas=array[1..nmax] of real;//массив-строка матрицы
     matr=array[1..nmax] of mas;//матрица - массив строк
procedure Vvod(var mt:matr;var x:byte);//создание матрицы
var i,j:byte;
begin
repeat//вводим размер с проверкой диапазона
write('Размер матрицы до ',nmax,' =');readln(x);
until x in [1..nmax];
{writeln('Введите ',x*x,' элементов матрицы:');//это если вводить с клавиатуры
for i:=1 to x do
for j:=1 to x do
 begin
  write('el[',i,',',j,']=');
  readln(mt[i,j]);
 end;
clrscr;}
for i:=1 to x do//создание рандомно
for j:=1 to x do
mt[i,j]:=10*random;
end;
procedure Vyvod(var mt:matr;x:byte);//вывод на экран
var i,j:byte;
begin
for i:=1 to x do
 begin
  for j:=1 to x do
  write(mt[i,j]:0:2,' ');
  writeln;
 end;
end;
procedure Stroka(var v:mas;x,k:byte;var mx:real);//преобразование строк
//входной и выходной параметр - строка, входные-длина строки и ее номер, выходной-макс
var i,imx:byte;
    b:real;
begin
mx:=v[1];imx:=1;
for i:=1 to x do
if v[i]>mx then
 begin
  mx:=v[i];//находим макс
  imx:=i;//его номер в строке
 end;
writeln('Максимальный элемент в строке ',k,'=',mx:0:2);
b:=v[imx];
v[imx]:=v[k];//меняем местами с диагональным
v[k]:=b;
for i:=1 to x do
v[i]:=v[i]/v[imx];//делим на диагональный, он сейчас на месте макс.
//если я неправильно понял и нужно делить на новый диагональный, бывший макс., то так 
//v[i]:=v[i]/v[k];
end;
var a:matr;
    n,i:byte;
    max:real;
begin
clrscr;
randomize;
Vvod(a,n);
writeln('Исходная матрица:');
Vyvod(a,n);
for i:=1 to n do
Stroka(a[i],n,i,max);
writeln('Преобразованная матрица:');
Vyvod(a,n);
readln
end.
0
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 9
24.02.2010, 17:33  [ТС] 3
Угу, вроде все понятно. Вопрос один, тип данных для i и j byte можем только использовать?
Сам делал когда - запутался как это все оформить.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
24.02.2010, 17:52 4
Цитата Сообщение от StoneR Посмотреть сообщение
тип данных для i и j byte можем только использовать?
Почему, можно и например integer, только зачем, если нам нужны числа из диапазона 1..20.
0
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 9
24.02.2010, 18:24  [ТС] 5
Понятно. Спасибо большое!
Можно еще спросить, вот задача:
"Введите строку из нескольких слов. Пусть она содержит слова "pro". Распечатайте отличные от "pro" слова",
Она каким то образом относится к массивам?О_о Или просто на логику?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
24.02.2010, 18:34 6
Можно и без массивов решать, просто выделять слова и сравнивать. Например так
1. Заменяем все разделители на пробелы.
2. Добавляем пробел в конец.
3. Удаляем лишние пробелы.
Строка приобретает вид
слово пробел слово пробел
Сейчас берем слова и сравниваем
Pascal
1
2
3
4
5
6
while pos(' ',s)>0 do
 begin
  s1:=copy(s,1,pos(' ',s)-1);
  if s1<>'pro' then write(s1,' ');
  delete(s,1,pos(' ',s));
 end;
1
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 9
24.02.2010, 19:23  [ТС] 7
а если использовать одномерный массив то при заполнении придется писать элементами слова и также допустим сравнивать как в вашем варианте?
можно прогу вашего варианта полностью, чтот не алгоритмирует моя голова
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
24.02.2010, 20:38 8
Можно и по другому, ничего не удаляя из текста.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
uses
  crt;
const
  rzd=[' ',',','.',':',';','+','-','*','/','|','\','=','-','_'];{дописать нужные разделители}
var
  s,s1:string;
  i,k,j:byte;
begin
clrscr;
writeln('Введите строку...');
readln(s);
{пробегаем всю строку посимвольно}
i:=1;
while i<=length(s) do
if not(s[i] in rzd) then{если не разделитель}
 begin
  s1:='';{начинаем составлять слово}
  j:=i;k:=0;{начинаем считать буквы}
  while not(s[j] in rzd)and(j<=length(s)) do
  {пока не разделитель и не конец строки}
   begin
    s1:=s1+s[j];{составляем слово}
    j:=j+1;{идем вперед}
    k:=k+1;
   end;
  if s1<>'pro' then{если не pro}
  write(s1,' ');
  i:=i+k+1;{перепрыгиваем через слово}
 end
else i:=i+1;{если разделитель, пропускаем}
readln
end.
1
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 9
24.02.2010, 21:02  [ТС] 9
ну тут понятно.
Премного благодарен за помощь!)
0
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 9
02.03.2010, 19:49  [ТС] 10
Думаю может кому понадобится если, так вот как я решил:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Program pr10;
uses crt;
var st:string;
k:integer;
begin
writeln('vvedite stroky');
readln (st);
k:=pos('pro',st);
while k>0 do
begin
delete(st,k,3);
k:=pos('pro',st);
end;
writeln('poly4enna9 stroka');
writeln(st);
end.
Тут нам ничего сравнивать не нужно, просто удаляем из строки все слова 'pro' и выводим то что нам требуется)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
02.03.2010, 20:38 11
StoneR, Введите такую строку probel prosto Здесь нет ни одного слова pro. Посмотрите результат.
0
0 / 0 / 0
Регистрация: 23.02.2010
Сообщений: 9
03.03.2010, 14:15  [ТС] 12
да я понимаю что это недочет, но решение впринципе логически верное, если не вводить подобные слова содержащие pro.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.03.2010, 14:21 13
По определению слово, это группа символов, отделенная от других таких же групп разделителями с 2х сторон, если слово не первое и не последнее, а так у Вас любой символ это слово.
0
03.03.2010, 14:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2010, 14:21
Помогаю со студенческими работами здесь

Двумерные массивы
Помогите решить В квадратной матрице размером M*M, имеющий имя MKM, содержаться целые числа M-...

Двумерные массивы
Задание дано на рисунке. Помогите выполнить данное задание Спасибо!

Двумерные массивы
Дана матрица A=(aij)mxn.Компоненты вектора s=(s1,s2,...,sn) вычисляются по формуле m sj= E...

Двумерные массивы
Читаю книгу по явескрипту, дошёл до 2-мерных массивов. Там такой небольшой примерчик выводящий...

Двумерные массивы
Помогите мне с кодом вот задание 3. 10. самый влажный месяц в году Если что не понятно скачайте...

Двумерные массивы
#include &lt;iostream&gt; using namespace std; int main() { int n, m, s; int a; cin &gt;&gt; n &gt;&gt; m;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru