Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 375
от 20.05.2007, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 252, Экспертов: 68
В номере:Вопросов: 5, Ответов: 11


Вопрос № 86911: Прошу помогите с задачей. Дана квадратная матрица порядка n, в каждой строке матрицы выбрать наибольший элемент и поменять его с диаганальным элементом этой строки. Спасибо!...
Вопрос № 86915: Здравствуйте! никак не могу разобраться с программой на паскале.задание следуещее: Даны n фамилий упорядочить их в алфавитном порядке. фамилии могут быть на латинском языке.заранее очень благодарен...
Вопрос № 86919: очень прошу решите задачу в паскале: Из множества прямых М, заданных коэффицентами уравнения Ах+Ву+С=0,выбрать прямые или совокупности прямых,обладающие определенными свойствами: 1)взаимно параллельные прямые 2)вск пары взаимно перпендику...
Вопрос № 86995: Люди,пожалуйста,срочно нужна помощь в плане написания курсовика по Pascal`ю...сроки сильно поджимают=(Заранее благодарен! описание:Выполнить над квадратной матрицей,порядка n ,порядок действий.Для каждого действия заданы последовательности,н...
Вопрос № 87015: Помогите, пожалуйста составить программу на Pascal, используя case, которая читает натуральное число N в десятичном представление ( N <= 100), а на выходе выдает это же число в десятичном представление и на естественном языке. 7- семь....

Вопрос № 86.911
Прошу помогите с задачей.

Дана квадратная матрица порядка n, в каждой строке матрицы выбрать наибольший элемент и поменять его с диаганальным элементом этой строки.

Спасибо!
Отправлен: 14.05.2007, 21:43
Вопрос задал: Серов Алексей Евгеньевич (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Verena
Здравствуйте, Серов Алексей Евгеньевич!

Диагональный элемент, как я понимаю, лежит на главной диагонали, тогда его координаты: i=j. Тогда всё просто:

var a: array [1..10, 1..10] of integer;
i, j, n, max, buf: integer;
begin
read (n); {ввод размерности и матрицы}
for i:=1 to n do
for j:=1 to n do
readln (a[i, j]);
for i:=1 to n do
begin
max:= 1; {за максимальный принимаем первый элемент строки (запоминаем индекс)}
for j:=1 to n do
if a[i, j]>a[i, max] then max:= j; {если текущий больше, перезапоминаем индекс}
buf:= a[i, i]; {меняем местами с элементом [i, i] - лежит на главой диагонали}
a[i, i]:= a[i, max];
a[i, max]:= a[i, j];
end;
for i:= 1 to n do begin {вывод}
for j:=1 to n do write (a[i, j], ' ');
writeln;
end;
end.
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 14.05.2007, 21:55

Отвечает: Устинов С.Е.
Здравствуйте, Серов Алексей Евгеньевич!


const n=3;
var a:array[1..n,1..n] of integer;
i,j,t:integer;
begin
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']='); readln(a[i,j]);
end;
for i:=1 to n do
begin
t:=1;
for j:=2 to n do if a[i,j]>a[i,t] then t:=j;
j:=a[i,i];
a[i,i]:=a[i,t];
a[i,t]:=j;
end;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j],' ');
writeln;
end;
end.


Удачи!
---------
Ждешь квалифицированного ответа? Задай правильно вопрос!
Ответ отправил: Устинов С.Е. (статус: Практикант)
Ответ отправлен: 14.05.2007, 21:57

Отвечает: Вологин Всеволод Вячеславович
Здравствуйте, Серов Алексей Евгеньевич!

Вот примерное решение проги.

Program P1;
Uses crt;
Var
Mas : array[1..50,1..50] of Integer;
i,j,max,n,Buffer,Index : Integer;
{------}
Procedure Print_Massiv;
Begin
For i:=1 to n do
Begin
Writeln;
For j:=1 to n do
Write(' ',Mas[i,j]);
End;
End;
{------}
Begin
Repeat
Clrscr;
Write('‚ўҐ¤ЁвҐ а §¬Ґа­®бвм --> ');
ReadLn(n);
Until n>=2;
For i:=1 to n do
For j:=1 to n do
Begin
Write('Введите [',i,':',j,']-й элемент -- > ');
Readln(Mas[I,J]);
End;
Clrscr;
Print_Massiv;
For i:=1 to n do
Begin
Max := Mas[i,1];
For j:=1 to n do
If Mas[i,j] > Max
Then
Begin
Max := Mas[i,j];
Index := j;
End;
Buffer := Mas[i,i];
Mas[i,i] := Max;
Mas[i,Index] := Buffer;
End;
Writeln;
Writeln('Результат');
Print_Massiv;
ReadKey;
End.

зы не судите строго
---------
Это круто - машина состояний с бесконечным циклом
Ответ отправил: Вологин Всеволод Вячеславович (статус: 1-ый класс)
Ответ отправлен: 15.05.2007, 11:52


Вопрос № 86.915
Здравствуйте! никак не могу разобраться с программой на паскале.задание следуещее: Даны n фамилий упорядочить их в алфавитном порядке. фамилии могут быть на латинском языке.заранее очень благодарен
Отправлен: 14.05.2007, 22:56
Вопрос задал: Den_Greg (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: LEXASOFT
Здравствуйте, Den_Greg!

Программа в приложении

Приложение:

---------
Нет безвыходных положений...

Ответ отправил: LEXASOFT (статус: 4-ый класс)
Ответ отправлен: 14.05.2007, 23:42
Оценка за ответ: 5

Отвечает: Вологин Всеволод Вячеславович
Здравствуйте, Den_Greg!

Эта прога располагает список фамилий по алфавиту в зависимости ASCII - кодировкой.

Program p1;
uses crt;
Var
Mas : array[1..100] of string;
i,n : integer;
st : string;
Flag : Boolean;
Begin
Repeat
Clrscr;
Write('Введите количество фамилий --> ');
Readln(n);
Until n>1;
For i:=1 to n do
Begin
Writeln('Введите фамилию ',i,'-го человека --> ');
Readln(Mas[i]);
End;
Clrscr;
Repeat
Flag:=true;
For i:=1 to n-1 do
If Mas[i] > Mas[i+1]
Then
Begin
st := Mas[i+1];
Mas[i+1]:=Mas[i];
Mas[i] := st;
Flag:= false;
End;
Until flag;
Writeln('Результат');
For i:=1 to n do
Writeln(Mas[i]);
readkey;
End.
---------
Это круто - машина состояний с бесконечным циклом
Ответ отправил: Вологин Всеволод Вячеславович (статус: 1-ый класс)
Ответ отправлен: 15.05.2007, 12:07
Оценка за ответ: 5


Вопрос № 86.919
очень прошу решите задачу в паскале:
Из множества прямых М, заданных коэффицентами уравнения Ах+Ву+С=0,выбрать прямые или совокупности прямых,обладающие определенными свойствами:
1)взаимно параллельные прямые
2)вск пары взаимно перпендикулярных прямых
3)две параллельные прямые,между которыми наименьшое расстояние
54х+13у-400=0
117х-17у+5=0


зарание большое ну прсто огромное спасибо
Отправлен: 14.05.2007, 23:39
Вопрос задал: Мишин Георгий Васильевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Verena
Здравствуйте, Мишин Георгий Васильевич!

Параллельность прямых будем проверять по условию равенства угловых коэффициентов (Ах+Ву+С=0 => y = -(A/B)x-(C/B), k=A/B, минус можно опустить). Т.е.
A1/B1=A2/B2
Перпендикулярность также проверяем через угловые коэффициенты:
(A1/B1)*(A2/B2)=-1
Расстояние между параллельными прямыми вычислим по формуле:
d=|A2*x+B2*y+C2|/sqrt(A2^2+B2^2), где x, y - координаты произвольной точки на прямой A1x+B1y+C1=0.
Программа ищет пары (у Вас в 1-м пункте о парах ничего не сказано, так что особо обращаю внимание) параллельных и перпендикулярных прямых, коэффициенты хранятся в виде матрицы, а также номера параллельных прямых с минимальным расстоянием (предполагается, что минимум один).
Код в приложении.
Удачи!

Приложение:

---------
Эта история - не для истории, понимаешь?

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 15.05.2007, 03:37


Вопрос № 86.995
Люди,пожалуйста,срочно нужна помощь в плане написания курсовика по Pascal`ю...сроки сильно поджимают=(Заранее благодарен!

описание:Выполнить над квадратной матрицей,порядка n ,порядок действий.Для каждого действия заданы последовательности,начиная со второго,исходной является матрица,полученная в результате выполнения предшествующих преобразований.Список дейсвий над матрицами:
1. Вычесть из исходной еденичную матрицу
2. сформировать матрицу транспонированную по отношению к исходной
3. сформировать из элементов исходной матрицы,лежащей под главной диагональю,кососимметрическую матрицу(матрица А симметрическая,если Aij=-Aji при любых значениях i j)
4. сформировать диагональную матрицу из элементов,которое определяются как суммы элементов столбцов исходной матрицы
5. у элементов с нечетной суммой индеков заменить знаки на противоположные
6. умножить L-й столбей матрицы на заданное число
7. из элементов исходной матрицы лежащей на главной диагонали и под ней,сформировать вектор,в котором первый элемент каждой строки непосредственно следуетза диагональным элементом предыдущей.
вот такой бред=(для меня это полный ужас!!!помогите....
Отправлен: 15.05.2007, 15:00
Вопрос задал: Aphro (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Вологин Всеволод Вячеславович
Здравствуйте, Aphro!

проги 3,4,7 не вкурил как делать.
Что сделал прими (проерь перед сдачей).

program p1;
uses crt;
Var
Mas : Array[1..100,1..100] of integer;
i,j,n : Integer;
{---}
Procedure Print_Massiv;
Begin
For i:=1 to n do
Begin
Writeln;
For j:=1 to n do
Write(' ',Mas[i,j]);
End;
End;
{---}
Begin
Repeat
clrscr;
Write('Введите размерность массива --> ');
readln(n);
Until n>=2;
For i:=1 to n do
for j:=1 to n do
begin
Write('Введите [',i,':',j,']-й элемент -->');
Readln(Mas[i,j]);
End;
Print_Massiv;
WriteLn('Из исходной матрицы вычитает единичную : ');
For i:=1 to n do
Mas[i,i]:=Mas[i,i]-1;
Print_Massiv;
Readkey;
End.

program p2;
uses crt;
Var
Mas : Array[1..100,1..100] of integer;
i,j,n : Byte;
{---}
Procedure Print_Massiv;
Begin
For i:=1 to n do
Begin
Writeln;
For j:=1 to n do
Write(' ',Mas[i,j]);
End;
End;
{---}
Procedure Print_Massiv_Transponir;
Begin
For i:=1 to n do
Begin
Writeln;
For j:=1 to n do
Write(' ',Mas[j,i]);
End;
End;
{---}
Begin
Repeat
clrscr;
Write('Введите размерность массива --> ');
readln(n);
Until n>=2;
For i:=1 to n do
for i:=1 to n do
begin
Write('Введите [',i,':',j,']-й элемент -->');
Readln(Mas[i,j]);
End;
Print_Massiv;
Writeln('результат');
Print_Massiv_Transponir;
Readkey;
End.

program p5;
uses crt;
Var
Mas : Array[1..100,1..100] of integer;
i,j,n : Integer;
{---}
Procedure Print_Massiv;
Begin
For i:=1 to n do
Begin
Writeln;
For j:=1 to n do
Write(' ',Mas[i,j]);
End;
End;
{---}
Begin
Repeat
clrscr;
Write('Введите размерность массива --> ');
readln(n);
Until n>=2;
For i:=1 to n do
for j:=1 to n do
begin
Write('Введите [',i,':',j,']-й элемент -->');
Readln(Mas[i,j]);
End;
Print_Massiv;
WriteLn('элементы с нечетной суммой индеков заменены на противоположные : ');
For i:=1 to n do
For j:=1 to n do
If (i+j)mod 2 <> 0
Then Mas[i,i]:=Mas[i,i]*(-1);
Print_Massiv;
Readkey;
End.

program p6;
uses crt;
Var
Mas : Array[1..100,1..100] of integer;
i,j,n,l,a : Integer;
{---}
Procedure Print_Massiv;
Begin
For i:=1 to n do
Begin
Writeln;
For j:=1 to n do
Write(' ',Mas[i,j]);
End;
End;
{---}
Begin
Repeat
clrscr;
Write('Введите размерность массива --> ');
readln(n);
Until n>=2;
For i:=1 to n do
for j:=1 to n do
begin
Write('Введите [',i,':',j,']-й элемент -->');
Readln(Mas[i,j]);
End;
Writeln('Исходный массив');
Print_Massiv;
Repeat
Write('L-й столбец --> ');
Readln(l);
Until (l>0) and (l<=n);
Write('На какое число умножить --> ');
Readln(a);
For i:=1 to n do
Mas[i,L]:=Mas[i,L]*a;
WriteLn('Результат : ');
Print_Massiv;
Readkey;
End.
---------
Это круто - машина состояний с бесконечным циклом
Ответ отправил: Вологин Всеволод Вячеславович (статус: 1-ый класс)
Ответ отправлен: 16.05.2007, 12:19
Оценка за ответ: 4
Комментарий оценки:
спасибо большое,я постараюсь доработать,хз получиться или нет=)


Вопрос № 87.015
Помогите, пожалуйста составить программу на Pascal, используя case, которая читает натуральное число N в десятичном представление ( N <= 100), а на выходе выдает это же число в десятичном представление и на естественном языке. 7- семь.
Отправлен: 15.05.2007, 16:42
Вопрос задал: Leeryhomer (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Verena
Здравствуйте, Leeryhomer!

Можно было бы решить такую задачу, задав массив, хранящий под соответствующим индексом соответствующую цифру, записать цифры числа по отдельности в целочисленный массив и вызывать по индексу, пользуясь правилами формирования числа (например, пятьдесят = "пять"+"десят", двадцать = "два"+"дцать"), но такой способ не слишком сильно демонстрирует работу оператора case, там его можно даже вообще не использовать. Поэтому я написала код не очень оптимальный, зато полностью основанный на операторе выбора case, смотрите в приложении.

Приложение:

---------
Эта история - не для истории, понимаешь?

Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 15.05.2007, 17:39
Оценка за ответ: 5

Отвечает: Загиров Рустам
Здравствуйте, Leeryhomer!
В предыдущей программе эксперта Verena мне не нравиться преобразование числа в строку - можно обойтись и без этого. Вот немного другой код.

Приложение:

---------
Этот мир обречён на нас
©Сергей Маврин

Ответ отправил: Загиров Рустам (статус: Специалист)
Ответ отправлен: 15.05.2007, 18:50
Оценка за ответ: 5

Отвечает: Вологин Всеволод Вячеславович
Здравствуйте, Leeryhomer

правда выводит с орфоргафическими очепятками :-

program p1;
uses crt;
var
St1,st2 : string;
n,m,b: integer;
Begin
Repeat
clrscr;
Write('‚ўҐ¤ЁвҐ зЁб«® --> ');
Readln(n);
Until (N>0) and (n<=100);
m:= Trunc(n / 10);
Case M of
1:St1:=' надцать';
2:st1:='двадцать ';
3:st1:='тридцать ';
4:st1:='сорок ';
5:st1:='пятьдесят ';
6:st1:='шестьдесят ';
7:st1:='семьдесят ';
8:st1:='восемьдесят ';
9:st1:='девяносто ';
10:st1:='сто';
End;
b:=n mod 10;
Case b of
1:St2:='один­';
2:st2:='два';
3:st2:='три';
4:st2:='четыре';
5:st2:='пять';
6:st2:='шесть';
7:st2:='семь';
8:st2:='восемь';
9:st2:='девять';
End;
If n=10
Then
Write(n,' - десять')
Else if m =1
Then Write(n,' - ',St2,st1)
Else
Writeln(n,' - ',St1,st2);
ReadKey;
End.
---------
Это круто - машина состояний с бесконечным циклом
Ответ отправил: Вологин Всеволод Вячеславович (статус: 1-ый класс)
Ответ отправлен: 16.05.2007, 12:53
Оценка за ответ: 5

Отвечает: VinipuX
Здравствуйте, Leeryhomer!

Посмотри вот здесь. На мой взгляд более чем исчерпывающая информация.
http://www.delphikingdom.ru/asp/itemq.asp?Mode=1&ItemID=431
Ответ отправил: VinipuX (статус: 2-ой класс)
Ответ отправлен: 17.05.2007, 02:28
Оценка за ответ: 5


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100

В избранное