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

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

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

 
 Ответить  Открыть новую тему 
> Массивы, 2 задачи связанные с массивами
сообщение
Сообщение #1


Новичок
*

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

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


Такая проблема: есть 2 задачи, выложенные в фотках внизу. Текст вроде написал... но не хочет работать =(((
Помогите, укажите на мои ошибки пожалуйста и подскажите, как правильно все это сделать.
Заранее благоадрен.
Изображение
Program var13;
type ar=array[1..100] of integer;
var m,z,j,n1:integer;
b:ar;
a1:array[1..100] of integer;
procedure sort(n:integer; var a:ar);
var k,i,t:integer;
begin
for i:=1 to n do read (a[i]);
for k:=1 to n-1 do
for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
end;
end;
begin
writeln('vvedite kol-vo el-ov v stroke: ');
readln(n1);
writeln('vvedite kol-vo strok: ');
readln(z);
for m:=1 to z do
begin
writeln('vvedite stroku: ');
sort(n1,b);
for j:=1 to n1 do
a1[m,j]:=b[j];
end;
writeln('massiv: ');
for m:=1 to z do
begin
for j:=1 to n1 do
write(a1[m,j],' ');
writeln;
end;
end.

Изображение
Program var25;
const n=0;
type ar=array[1..100,1..100] of integer;
var s,m,z,j,n1,m1:integer;
b,c:ar;
procedure init(var a:ar);
var i:integer;
function max(a:ar):integer;
var i,max1:integer;
function min(a:ar):integer;
var i,min1:integer;
begin
write('vvedite chislo: ');
readln(n1);
randomize;
for i:=1 to n1 do
begin
for j:=1 to m1 do
begin
a[i,j]:=random(100)-random(100);
write(a[i,j]:8);
end;
write;writeln;
end;
for i:=1 to n do
begin
for j:=1 to m do
readln(a[i,j]);
end;
begin
max1:=a[1,1];
for i:=2 to n do
if a[i,j]>max1 then max1:=a[i,j];
max:=max1;
end;
begin
min1:=a[1,1];
for i:=2 to n do
if a[i,j]<min1 then min1:=a[i,j];
min:=min1;
end;
begin
writeln('kol-vo el-ov v stolbce: ',n);
writeln('vvedite kol-vo stolbcov: ');
readln(z);
for m:=1 to z do
begin
init(b);
c[n1,m1]:=min(b);
end;
s:=max©;
writeln('max= ',s);
readln;
end.



--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Вот тут:
for k:=1 to n-1 do
for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
end;
- ты, во-первых, сортируешь по возрастанию, а во-вторых - неправильно.
Вот как-то так попробуй:
for k:=2 to n do for i:=k downto 2 do if a[i]>a[i-1] then begin
t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
end;
А вообще загляни в FAQ, там есть все про сортировку.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Не выходит... =(


--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(org777 @ 16.05.2009 7:42) *
Не выходит... =(
Обожаю я "народный фольклор". Вот есть в нем что-то такое таинственное, зовущее за собой! Вот придет народ, скажет: "замолаживает.." - и сразу все так становится несказанно обворожительно.. Будто к вековечному кладезю мудрости прикоснулся. И не надо слов - одни чувства! Чувствуется величие, фундаментальность, основательность.. Вы только вслушайтесь:
Цитата(org777 @ 16.05.2009 7:42) *
Не выходит... =(
Ведь целая поэма, а?? Вслушайтесь только - ведь сразу все ясно! Ясно, что вот, наверное, вошло.. а вот - не выходит! Где не выходит, что не выходит - это же не важно в конце концов - ну что вы мелочитесь??
Цитата(org777 @ 16.05.2009 7:42) *
Не выходит... =(
- и сразу затихают бури, спят моря, вырастает заря до небес..
Цитата(org777 @ 16.05.2009 7:42) *
Не выходит... =(
- и смятение чувств преполняет чашу океанов земных,
Цитата(org777 @ 16.05.2009 7:42) *
Не выходит... =(
- больше нетгоря, боли, несбывшихся мечт, два слова только:
Цитата(org777 @ 16.05.2009 7:42) *
Не выходит... =(
- да и не два даже, а всего полтора:
Цитата(org777 @ 16.05.2009 7:42) *
Не выходит... =(
- и все, ВСЕ сказано!!

Где, что не выходит - гадайте сами. То ли каменный цветок, а то ли еще чего. Ну вас ваще.. Не приставайте ко мне вашими мелочами в моей нирване.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


Lapp, в тебе живет душа поэта good.gif
А по теме: то, что ты мне посоветовал и не выходит...


--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гуру
*****

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

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


Цитата
А по теме: то, что ты мне посоветовал и не выходит...

Так что именно не выходит-то? Сортирует, не сортирует, вообще не компилируется?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

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

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


Вообще не компилируется


--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(org777 @ 17.05.2009 15:36) *
Вообще не компилируется
О! Партизан заговорил! smile.gif

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

По делу.. У тебя массив a1 описан одномерным, а используешь ты его как двумерный. И зачем ты вводишь саму строку в процедуре? Она должна только сортировать.

Короче, вот. И обрати внимание на правильное форматирование и постарайся его придерживаться.
Program var13;
type
ar=array[1..100] of integer;
var
m,z,i,n1:integer;
a1:array[1..100] of ar;

procedure sort(n:integer; var a:ar);
var
k,i,t:integer;
begin
for k:=2 to n do for i:=k downto 2 do if a[i]>a[i-1] then begin
t:=a[i];
a[i]:=a[i-1];
a[i-1]:=t;
end;
end;

begin
writeln('vvedite kol-vo el-ov v stroke: ');
readln(n1);
writeln('vvedite kol-vo strok: ');
readln(z);
for m:=1 to z do begin
writeln('vvedite stroku: ');
for i:=1 to n1 do read (a1[m,i]);
sort(n1,a1[m]);
end;
writeln('massiv: ');
for m:=1 to z do begin
for i:=1 to n1 do write(a1[m,i]:4);
writeln;
end;
end.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Новичок
*

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

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


Цитата(Lapp @ 17.05.2009 22:21) *

О! Партизан заговорил! smile.gif

Извиняюсь smile.gif Просто тогда времени не было, да и не подумал, если честно... Моя оплошность smile.gif
За задачку спасибо большое!
А вот что со 2 неверно? Я ее сделал, она у меня компилировалась, но матрицу приходилось вводить вручную, и это преподу не понравилось. Они потребовала, чтобы матрица выводилась рандомно. И вот на этом я и завис... Вот самый первый мой рабочий вариант:
Program var25;
const n=4;
type ar=array[1..100] of integer;
var s,m,z,j,n1:integer;
b,c:ar;
procedure init(var a:ar);
var i:integer;
begin
writeln('vvedite chislo: ');
for i:=1 to n do
readln(a[i]);
end;
function max (a:ar):integer;
var i,max1:integer;
begin
max1:=a[1];
for i:=2 to n do
if a[i]>max1 then max1:=a[i];
max:=max1;
end;
function min(a:ar):integer;
var i,min1:integer;
begin
min1:=a[1];
for i:=2 to n do
if a[i]<min1 then min1:=a[i];
min:=min1;
end;
begin
writeln('kol-vo el-ov v stolbce: ',n);
writeln('vvedite kol-vo stolbcov: ');
readln(z);
for m:=1 to z do
begin
init(b);
c[m]:=min(b);
end;
s:=max©;
writeln('max= ',s);
end.


--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(org777 @ 18.05.2009 0:21) *
матрицу приходилось вводить вручную, и это преподу не понравилось. Они потребовала, чтобы матрица выводилась рандомно. И вот на этом я и завис...
Вводить рандомно всегда проще, чем вручную.
Program var25;
const
n=4;
type
ar=array[1..100] of integer;
var
s,m,z,j,n1:integer;
b,c:ar;

function max (a:ar):integer;
var
i,max1:integer;
begin
max1:=a[1];
for i:=2 to n do if a[i]>max1 then max1:=a[i];
max:=max1;
end;

function min(a:ar):integer;
var
i,min1:integer;
begin
min1:=a[1];
for i:=2 to n do
if a[i]<min1 then min1:=a[i];
min:=min1;
end;

begin
writeln('kol-vo el-ov v stolbce: ',n);
writeln('vvedite kol-vo stolbcov: ');
readln(z);
for m:=1 to z do begin
for j:=1 to n do b[j]:=Random(100); {сл. ч. в диапазоне 0 - 99 }
c[m]:=min(b);
end;
s:=max©;
writeln('max= ',s);
end.
Но только боюсь, что твоя преподавательница опять будет недовольна. Ты фактически избегаешь использовать матрицу о которой идет речь в условии. Сделай, как я тебе сделал в первой задаче.

И, пожалуйста, форматируй код по-человечески!! Невозможно же читать, приходится сначала все форматировать..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Новичок
*

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

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


по твоему способу он на все вводимые с клавы числа выводит max=16...


--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата
по твоему способу он на все вводимые с клавы числа выводит max=16...
А randomize у тебя есть, чтобы при разных запусках программы генерировались разные случайные числа? У тебя ж генерируется все время все одинаковое... Для отладки - хорошо, для работы - не очень. Добавь randomize первой строкой программы, и запускай.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

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

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


Короче, получилось вот так вот:
Program var25;
const
n=4;
type
ar=array[1..100] of integer;
var
s,m,z,j,i,m1,n1:integer;
b,c:ar;
a:array[1..100,1..100] of integer;

procedure sort(n:integer; var a:ar);
var
k,i,t:integer;
begin
for k:=2 to n do for i:=k downto 2 do if a[i]>a[i-1] then begin
t:=a[i];
a[i]:=a[i-1];
a[i-1]:=t;
end;
end;

function max (a:ar):integer;
var
i,max1:integer;
begin
max1:=a[1];
for i:=2 to n do if a[i]>max1 then max1:=a[i];
max:=max1;
end;

function min(a:ar):integer;
var
i,min1:integer;
begin
min1:=a[1];
for i:=2 to n do
if a[i]<min1 then min1:=a[i];
min:=min1;
end;

begin
randomize;
for i:=1 to n1 do
begin
for j:=1 to m1 do
begin
a[i,j]:=random(100)-random(100);
write(a[i,j]:8);
end;
write;writeln;
end;
for i:=1 to n do
begin
for j:=1 to m do
readln(a[i,j]);
end;
end;

begin
writeln('kol-vo el-ov v stolbce: ',n);
writeln('vvedite kol-vo stolbcov: ');
readln(z);
for m:=1 to z do begin
for j:=1 to n do b[j]:=Random(100);
c[m]:=min(b);
end;
s:=max©;
writeln('max= ',s);
readln;
end.

Но саму матрицу он опять не показывает... =(


--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цитата
Но саму матрицу он опять не показывает... =(
А ты ее где-нибудь хотя бы заполняешь (я не говорю о том, что компилятору надо сообщить о своем желании вывести матрицу на экран, он сам этого делать не умеет). Нет. Ты выбрал самый простой путь: заполняешь столбцы, ищешь в них минимумы, потом среди найденного ищешь максимум. Очень удобно, без лишних телодвижений, да? Ан вот оно "золотое правило". Где-то выиграл - значит, где-то проиграл. А проиграл ты в удобстве вывода результатов... В принципе, задача решается так (если принять, что матрица хранится по столбцам, и печатать ее соответственно):
Program var25;
const
n = 4;
type
vec = array[1 .. 100] of integer;
mx = array[1 .. 100] of vec;

function max (const a: vec; n: integer):integer;
var
i, max1:integer;
begin
max1:=a[1];
for i:=2 to n do if a[i]>max1 then max1:=a[i];
max:=max1;
end;
function min(const a: vec; n: integer):integer;
var
i,min1:integer;
begin
min1:=a[1];
for i:=2 to n do
if a[i]<min1 then min1:=a[i];
min:=min1;
end;

var
cols, s,z,j,n1:integer;
c: vec;
A: mx;

begin
randomize;
writeln('kol-vo el-ov v stolbce: ',n);
writeln('vvedite kol-vo stolbcov: ');
readln(z);
for cols := 1 to z do begin
for j := 1 to n do a[cols, j] := Random(100);
c[cols] := min(a[cols], n);
end;

for j := 1 to n do begin
for cols := 1 to z do
write(a[cols, j]:4);
writeln;
end;
s:=max( c, z );
writeln('max= ',s);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Новичок
*

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

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


Да уж, о "золотом правиле" я и не подумал...
Если я правильно понял, ты ее через вектор сделал... Не подумал я...
а что за переменная cols?


--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






А что за переменная M у тебя была? Как хочу, так и обзываю переменные. Только в моем случае понятно, что это - переменная для перебора столбцов (columns), а в случае M может быть вообще что угодно.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

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

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


ааа, просто я не знал о переменной для перебора столбцов, поэтому и стало любопытно smile.gif
большое спасибо =)


--------------------
Когда вам говорят - "придурок" - это намек на то, что рядом с вами находится дура.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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