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

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

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

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Помогите с процедурой...
volvo
сообщение 17.01.2008 11:49
Сообщение #21


Гость






Ну, посмотри вот тут: Сравнение Borland Pascal со стандартами - там указаны отличия... Можно и выгоду найти... При желании smile.gif
 К началу страницы 
+ Ответить 
Айра
сообщение 17.01.2008 12:02
Сообщение #22


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

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


За ссылку пасибо, буду изучать)) (p.s. загнать текст в переводчик побоялась, придется старым добрым методом со словариком))))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mouse1
сообщение 17.01.2008 21:17
Сообщение #23


Новичок
*

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

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


Повременил я с благодарствами =)

С утра не успел проверить,в инст пришёл и опана...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 17.01.2008 21:23
Сообщение #24


Профи
****

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

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


Ты про это


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mouse1
сообщение 17.01.2008 21:56
Сообщение #25


Новичок
*

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

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


эм,он строки местами меняет тока кажись...

Сообщение отредактировано: mouse1 - 17.01.2008 21:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 17.01.2008 22:00
Сообщение #26


Профи
****

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

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


Цитата
в инст пришёл и опана...
Скажи пример, на каком неправильно отработало
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mouse1
сообщение 17.01.2008 22:14
Сообщение #27


Новичок
*

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

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


Там несоответствие типов было,а сейчас он не сортирует... Прост отображается точно такая же матрица 2-ой раз...
n=3
m=3
[1,1]=1
[1,2]=3
[1,3]=2
[2,1]=5
[2,2]=5
[2,3]=5
[3,1]=2
[3,2]=2
[3,3]=1
Про отриц элементы в матрице всё правильно выдаёт

1 3 2
5 5 5
2 2 1

Номер первого столбца, в котором нет отриц элементов=1

а дальше должен отсортировать строки по возрастанию количества одинаковых элементов

5 5 5
2 2 1
1 3 2

Сообщение отредактировано: mouse1 - 17.01.2008 22:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 17.01.2008 22:24
Сообщение #28


Профи
****

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

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


Цитата
по возрастанию количества одинаковых элементов
А ты пишешь
Цитата
5 5 5
2 2 1
1 3 2
Надо ведь так:
1 3 2
2 2 1
5 5 5

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mouse1
сообщение 17.01.2008 22:26
Сообщение #29


Новичок
*

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

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


упс...ну да blush.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 17.01.2008 22:29
Сообщение #30


Профи
****

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

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


Тогда надо изменить процедуру bubble
for i:=1 to nmax do
for j:=nmax downto i do
if kol(m[i])>kol(m[j]) then
begin
t:=m[j];
m[j]:=m[i];
m[i]:=t;
end;
Вроде на всех примерах отработала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mouse1
сообщение 17.01.2008 22:54
Сообщение #31


Новичок
*

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

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


вставил,type mismatch выдаёт
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 17.01.2008 22:56
Сообщение #32


Профи
****

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

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


Надо же, несовпадение типов, ты хоть скажи где именно, и еще покажи ВЕСЬ код, куда и как ты это вставил mad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mouse1
сообщение 17.01.2008 22:59
Сообщение #33


Новичок
*

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

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


program proga;
uses crt;
const
max=10;
type
mas=array[1..max,1..max] of integer;
str = array[1..max] of integer;
var
nmax,mmax:integer;
m: mas;
i,j,n:integer;
function otr(var m:mas):integer;
var
found:boolean;
d,t:integer;
nom:integer;
begin
d:=0;
t:=0;
nom:=0;
for j:=1 to mmax do
begin
d:=d+t;
found:=false;
for i:=1 to nmax do
if m[i,j]<0 then
begin
found:=true;
end
else nom:=j;
if (found=false) and (d=0) then
begin
t:=1;
writeln('Номер первого столбца в котором нет отрицателных чисел = ',nom);
end;
end;
if (t=0) then writeln('Во всех столбцах матрицы присутствуют отрицательные числа.');
end;

Procedure bubble (Var m: mas);
Var t: str; //массив, который будет равен i-й строке матрицы
function kol(s: str): integer; //нахождение количества одинаковых
var v,w,k,kmax,x: integer;
begin
kmax:=0;
for v:=1 to mmax do
begin
k:=1;
x:=s[v];
for w:=v+1 to mmax do if s[w]=x then inc(k);
if k>kmax then kmax:=k;
end;
kol:=kmax;
end;
begin //начало процедуры
for i:=1 to nmax do
for j:=nmax downto i do
if kol(m[i])>kol(m[j]) then
begin
t:=m[j];
m[j]:=m[i];
m[i]:=t;
end;
end;

begin
clrscr;
writeln (' Упорядочить строки целочисленной прямоугольной матрицы');
writeln ('по возрастанию количества одинаковых элементов в каждой стоке; ');
writeln ('найти номер первого из столбцов, не содержащий ни одного ');
writeln ('отрицательного элемента. ');
writeln;
repeat
writeln('Введите размер прямоугольной матрицы:');
write('n=');
readln(nmax);
write('m=');
readln(mmax);
if (nmax<=0) or (nmax>max) or (mmax<=0) or (mmax>max) then
writeln('Ошибка! Размер матрицы не должен выходить за рамки 10х10.');
until (nmax>0) and (nmax<=max) and (mmax>0) and (mmax<=max);
for i:=1 to nmax do
for j:=1 to mmax do
begin
write ('[',i,';',j,']=');
readln(m[i,j]);
end;
writeln('_________________________________________________________');
writeln('полученная матрица');
for i:=1 to nmax do
begin
for j:=1 to mmax do
write (m[i,j]:4);
writeln;
end;
writeln('_________________________________________________________');
otr(m);
writeln('_________________________________________________________');
bubble (m);
writeln('полученная матрица');
for i:=1 to nmax do
begin
for j:=1 to mmax do
write (m[i,j]:4);
writeln;
end;
writeln('_________________________________________________________');
writeln('Для выхода из программы нажмите Enter');
readln;
end.




if kol(m[i])>kol(m[j]) then
здесь выдаёт
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 17.01.2008 23:03
Сообщение #34


Профи
****

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

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


Если ты еще не понял в чем ошибка, то читай пост #15
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mouse1
сообщение 17.01.2008 23:11
Сообщение #35


Новичок
*

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

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


Всё..понял..исправил !

program proga;
uses crt;
const
max=10;
type
str = array[1..max] of integer;
mas=array[1..max] of str;
var
nmax,mmax:integer;
m: mas;
i,j,n:integer;
function otr(var m:mas):integer;
var
found:boolean;
d,t:integer;
nom:integer;
begin
d:=0;
t:=0;
nom:=0;
for j:=1 to mmax do
begin
d:=d+t;
found:=false;
for i:=1 to nmax do
if m[i,j]<0 then
begin
found:=true;
end
else nom:=j;
if (found=false) and (d=0) then
begin
t:=1;
writeln('Номер первого столбца в котором нет отрицателных чисел = ',nom);
end;
end;
if (t=0) then writeln('Во всех столбцах матрицы присутствуют отрицательные

числа.');
end;

Procedure bubble (Var m: mas);
Var t: str; {массив, который будет равен i-й строке матрицы}
function kol(s: str): integer; {нахождение количества одинаковых}
var v,w,k,kmax,x: integer;
begin
kmax:=0;
for v:=1 to mmax do
begin
k:=1;
x:=s[v];
for w:=v+1 to mmax do if s[w]=x then inc(k);
if k>kmax then kmax:=k;
end;
kol:=kmax;
end;
begin {начало процедуры}
for i:=1 to nmax do
for j:=nmax downto i do
if kol(m[i])>kol(m[j]) then
begin
t:=m[j];
m[j]:=m[i];
m[i]:=t;
end;
end;

begin
clrscr;
writeln (' Упорядочить строки целочисленной прямоугольной матрицы');
writeln ('по возрастанию количества одинаковых элементов в каждой стоке; ');
writeln ('найти номер первого из столбцов, не содержащий ни одного ');
writeln ('отрицательного элемента. ');
writeln;
repeat
writeln('Введите размер прямоугольной матрицы:');
write('n=');
readln(nmax);
write('m=');
readln(mmax);
if (nmax<=0) or (nmax>max) or (mmax<=0) or (mmax>max) then
writeln('Ошибка! Размер матрицы не должен выходить за рамки 10х10.');
until (nmax>0) and (nmax<=max) and (mmax>0) and (mmax<=max);
for i:=1 to nmax do
for j:=1 to mmax do
begin
write ('[',i,';',j,']=');
readln(m[i,j]);
end;
writeln('_________________________________________________________');
writeln('полученная матрица');
for i:=1 to nmax do
begin
for j:=1 to mmax do
write (m[i,j]:4);
writeln;
end;
writeln('_________________________________________________________');
otr(m);
writeln('_________________________________________________________');
bubble (m);
writeln('полученная матрица');
for i:=1 to nmax do
begin
for j:=1 to mmax do
write (m[i,j]:4);
writeln;
end;
writeln('_________________________________________________________');
writeln('Для выхода из программы нажмите Enter');
readln;
end.



Tnx everybody !!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 17.01.2008 23:59
Сообщение #36


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

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


Цитата
Тогда надо изменить процедуру bubble

Странно, но у меня прежний вариант сортирует нормально..
to mouse1 за "тип несовместим" сорри((( уже разобрали, почему у меня работало.. Ну хоть сдать еще есть возможность?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
mouse1
сообщение 18.01.2008 0:22
Сообщение #37


Новичок
*

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

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


Да,20 пойду ! Сёравно ещё другая прога не сделана,прост хотел облегчить себе учесть...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 9.09.2025 20:07
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"