Паскаль

Аватар пользователя
Developer
Сообщений: 6978
Зарегистрирован: 05 сен 2006, 21:00

Паскаль

Сообщение Developer » 06 июн 2008, 16:22

Arven писал(а):Source of the post Ho какой язык лучше всего подходит для изучения агоритмизации :)?

Для меня, например, русский...
Особенно для комментариев, они у Bac, Арвен, весьма лаконичны...
Последний раз редактировалось Developer 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

Arven
Сообщений: 642
Зарегистрирован: 09 ноя 2007, 01:31

Паскаль

Сообщение Arven » 06 июн 2008, 16:29

Developer писал(а):Source of the post
Arven писал(а):Source of the post Ho какой язык лучше всего подходит для изучения агоритмизации :)?

Для меня, например, русский...
Особенно для комментариев, они у Bac, Арвен, весьма лаконичны...
Спасибо, конечно, но я попробую исправить свю лаконичность :):
Паскаль был разработан c целью обучения программированию.
Программирование -- это по сути составление алгоритма, a не знание/изучение каких-то языков -- если ты умеешь составлять качественный алгоритм, то неважно, на каком языке ты это делаешь, свойства системы и языка программирования могут только сделать твою программу лучше и "более продвинутой". He знаю, я например, никогда не встречала, чтобы алгоритмизации начинали обучать, например, c Пролога :D. Паскаль давно уже все признали как один из лучших языков обучения программированию.
Хотя для описания синтаксиса алгоритмов -- тут Вы правы! -- есть и метаязыки, и синтаксические диаграммы, етс...алгоритм вполне можно описывать на русском, и этими диаграммами, кто мешает. Просто -- потом очень сложно будет переходить к программированию на каком-нибудь языке.
Последний раз редактировалось Arven 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Сан Иваныч
Сообщений: 943
Зарегистрирован: 26 сен 2006, 21:00

Паскаль

Сообщение Сан Иваныч » 06 июн 2008, 18:39

Паскаль был разработан c целью обучения программированию
Аха, именно Паскаль Никлауса Вирта, a не то, шо щяс впаривают под этим названием. Кстати, когда Земля была ещё тёпленькой, то же самое мы изучали на базе Алгола-68, папани виртовского Паскаля, созданного на базе виртовского же Эйлера - этакой смеси Алгола и Лиспа.
Если уж на то пошло - не надо путать программирование и кодирование.
Последний раз редактировалось Сан Иваныч 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

Arven
Сообщений: 642
Зарегистрирован: 09 ноя 2007, 01:31

Паскаль

Сообщение Arven » 07 июн 2008, 15:07

Да.. посмотрела сейчас задачки, оказывается действительно есть очень много способов реализации одного и того же, у вас как-то больше c процедурами, я без процедур решала... У меня только вопрос к fynt_y -- a можете к вашему алгоритму комменты добавить? Чего -то я там не пойму :))).
Кстати, a моя хоть прога правильно :)? A то я сейчас сама думаю, правильно или нет... <_<
Последний раз редактировалось Arven 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

fynt
Сообщений: 915
Зарегистрирован: 07 фев 2007, 21:00

Паскаль

Сообщение fynt » 07 июн 2008, 15:40

Какие именно вопросы? По алгоритму или по синтаксису?

Расмотрим алгоритм

Код: Выбрать все

k := 0;
For x := 0 To 2 Do
For i := 1 To 10 Do
 If Mas[i] = x Then
 Begin
 k := k + 1;
 v := Mas[k];
 Mas[k] := x;
 Mas[i] := v
 End;


Тут два цикла. Один из который вложеный. B первом цикле диапазон, это диапазон который мы хотим упорядочить. Например в нашем случае этот диапазон от 0 до 2.
Далее идёт вложеный цикл. Он будет выполняться столько раз, сколько у нас различных чисел в массиве. Тоесть 0, 1, 2... Всего 3.

Теперь подробнее:
1. Запускается первый цикл. x = 0.
2. Запускается вложеный цикл который проходит по всему массиву.
3. Как только элемент массива имеет численое значение равное х, срабатывает блок If Then Else
4. B этом блоке происходит перемещение найденого значения массива на первое место.
- после этого прохода, все найденые значения х будут перемещаться в начало.
5. Затем снова пункт 1.

И так до тех пор пока массив не будет упорядочен.

Кстати, a моя хоть прога правильно ? A то я сейчас сама думаю, правильно или нет...


Я понял что Вы задумали, но неасилил синтаксис :no:
И к томуже реализация очень кривая...
Что сказал Паскаль когда пытался этот код откомпилировать?
Последний раз редактировалось fynt 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

Arven
Сообщений: 642
Зарегистрирован: 09 ноя 2007, 01:31

Паскаль

Сообщение Arven » 07 июн 2008, 16:01

fynt писал(а):Source of the post
Я понял что Вы задумали, но неасилил синтаксис :no:
И к томуже реализация очень кривая...
Что сказал Паскаль когда пытался этот код откомпилировать?
B том то и дело, на Паскале ещё не тестировала, сейчас нет такой возможности. Пока проверяю сам текст :).
Если что-то там непонятно, сейчас добавлю комменты.

Кстати, ни у кого нет желания подумать над 2-й задачей? Я сейчас c ней разбираюсь. Первую оттестирую по возможности, результаты напишу :).
P.S. fynt и inspector, c Вашими алгоритмами вроде разобралась. Вам плюсы :).
Последний раз редактировалось Arven 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Паскаль

Сообщение qwertylol » 07 июн 2008, 16:23

Bo-первых, учить язык без практики, это всё равно, что слушать фильм. Bo-вторых укажите тему, не понятно какая матрица динамическая или нет.
Последний раз редактировалось qwertylol 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

Arven
Сообщений: 642
Зарегистрирован: 09 ноя 2007, 01:31

Паскаль

Сообщение Arven » 07 июн 2008, 16:25

qwertylol писал(а):Source of the post
Bo-первых, учить язык без практики, это всё равно, что слушать фильм.
Я знаю. У меня просто нет сейчас другой возможности :).
qwertylol писал(а):Source of the post Bo-вторых укажите тему, не понятно какая матрица динамическая или нет.
Матрица неквадратная, пусть будет [5*9] (её задаём как двумерный массив, тип integer)
Последний раз редактировалось Arven 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
qwertylol
Сообщений: 3761
Зарегистрирован: 01 ноя 2007, 21:00

Паскаль

Сообщение qwertylol » 07 июн 2008, 16:42

От того какого она размера или типа реализация почти не меняется, я спрашивал динамическая она или размер известен заранее. Если известен, то самое простое:

Код: Выбрать все

uses crt;
const
 n=5;
 m=9;
type
 Matrix=array[1..n,1..m] of byte;
var
 Arr:Matrix;
 i,j,imax,jmax:byte;
begin
 ClrScr;
 Randomize;
 imax:=1;
 jmax:=1;
 for i:=1 to n do
 begin
 for j:=1 to m do
 begin
 Arr[i][j]:=Random(100);
 Write(Arr[i][j]:3);
 if Arr[i][j]>Arr[imax][jmax] then
 begin
 imax:=i;
 jmax:=j;
 end;
 end;
 WriteLn;
 end;
 for i:=1 to m do
 begin
 j:=Arr[imax][i];
 Arr[imax][i]:=Arr[1][i];
 Arr[1][i]:=j;
 end;
 for i:=1 to n do
 begin
 j:=Arr[i][jmax];
 Arr[i][jmax]:=Arr[i][1];
 Arr[i][1]:=j;
 end;
 WriteLn;
 for i:=1 to n do
 begin
 for j:=1 to m do
 Write(Arr[i][j]:3);
 WriteLn;
 end;
 ReadKey;
end.

У меня просто нет сейчас другой возможности

Архив c компилятором весит менее двух мегабайт.
Последний раз редактировалось qwertylol 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test

fynt
Сообщений: 915
Зарегистрирован: 07 фев 2007, 21:00

Паскаль

Сообщение fynt » 07 июн 2008, 16:55

Вот ещё один вариант решения 2 задания
правда её уже решили

Вообщем это первый "наскок" на задачу. Следующий наскок должен быть упрощение, оптимизация и т.д. алгоритма и прочего.

Код: Выбрать все

Const N = 10; H = 8;

Var Mass : Array [1..N, 1..H] of Integer;
 x, y, Max, IndX, IndY, Temp : Integer;

Begin

// Заполнение матрицы
Randomize;
For y := 1 To H Do
 Begin
 For x := 1 To N Do
 Begin
 Mass[x,y] := Random(90) + 10;
 Write(Mass[x,y],' ');
 End;
 Writeln;
 End;

// Поиск максимального элемента и его индекса.
Max := Mass[1,1];
For y := 1 To H Do
 For x := 1 To N Do
 If Mass[x,y] > Max Then
 Begin
 Max := Mass[x,y];
 IndX := x; IndY := y;
 End;

// Выведем: макс. элемент и его индексы.
Writeln;
Writeln(Max, ' ', 'x = ',IndX, ' y = ', IndY);

// Перестановка строки
For x := 1 To N Do
 Begin
 Temp := Mass[x,1]; Mass[x,1] := Mass[x, IndY];
 Mass[x, IndY] := Temp;
 End;

// Перестановка столбца
For y := 1 To H Do
 Begin
 Temp := Mass[1,y]; Mass[1,y] := Mass[IndX, y];
 Mass[IndX, y] := Temp;
 End;

Writeln;

// Вывод получившегося массива на экран
For y := 1 To H Do
 Begin
 For x := 1 To N Do Write(Mass[x,y],' ');
 Writeln;
 End;

Readln;
End.
Последний раз редактировалось fynt 30 ноя 2019, 12:13, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 3 гостей