Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Паскаль матрицы, в квадратной таблице 
V
    Опции темы
syoksana
Дата 22.5.2008, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Привет, что нового? а у меня опять задачки, посмотрите, а?
1.В квадратной таблице обменяйте местами элементы строки и столбца на пересечении которых находится минимальный из положительных элементов.
Код

Program qqq;
var m:array[1..5,1..5]:integer;
       i, j,min,n_pol, str,sr:integer;
begin
  write ('vv n'); readln(n);
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 
  for j:=1 to n do 
   begin
     if (min>=m[i,j]) and (m[i,j]>0) then 
        begin
           min:=m[i,j];
           str:=i;
           st:=j;
         end;
      end;
           
{ но как поменять? строку со столбцом?}


2. Задан массив размерностью (10Х10) элементов. Присвоить элементам массива произвольные целочисленные значения в интервале от 0 до 100. Сформируйте новый массив путём постановки на места элементов главной диагонали минимального элемента побочной диагонали. Вывести на экран в формате 3 знака после занятой: исходный массив, полученный массив; искомые элементы (если они есть). Предусмотреть возможность вывода на экран и в файле.

я знаю, что решать за меня никто не буде, но всё же подскадите, как? что ?
PM MAIL   Вверх
volvo877
Дата 22.5.2008, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(syoksana @  22.5.2008,  00:05 Найти цитируемый пост)
{ но как поменять? строку со столбцом?}

Очень просто:
Код
Program qqq;
var
  m: array[1..5, 1..5] of integer;
  i, j, min, n, str, st: integer;

  T: integer;
begin
  write ('vv n'); readln(n);
  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
    for j := 1 to n do write(m[i, j]:4);
    writeln;
  end;

  min := maxint; { <--- Не забывай, значение надо инициализировать ! }
  for i:=1 to n do
    for j:=1 to n do begin
      if (min >= m[i,j]) and (m[i,j] > 0) then begin
        min:=m[i,j];
        str:=i;
        st:=j;
      end;
    end;

  writeln('str = ', str, ' st = ', st);
  for i := 1 to n do begin { <--- Вот так... }
    T :=  m[str, i]; m[str, i] := m[i, st]; m[i, st] := T;
  end;

  for i := 1 to n do begin
    for j := 1 to n do write(m[i, j]:4);
    writeln;
  end;

end.

PM MAIL   Вверх
Filon
Дата 22.5.2008, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 21.5.2008
Где: Челябинск

Репутация: нет
Всего: нет



Цитата(syoksana @ 21.5.2008,  22:05)
2. Задан массив размерностью (10Х10) элементов. Присвоить элементам массива произвольные целочисленные значения в интервале от 0 до 100. Сформируйте новый массив путём постановки на места элементов главной диагонали минимального элемента побочной диагонали. Вывести на экран в формате 3 знака после занятой: исходный массив, полученный массив; искомые элементы (если они есть). Предусмотреть возможность вывода на экран и в файле.

Приведу основной алгоритм.
Код

// A[10,10] - собственно матрица, B[10, 10] - результат
randomize;
for i := 1 to 10 do
  for j := 1 to 10 do A[i, j] := random(101);

//ищем минимум на побочной диагонали
min := A[1, 10];
for i := 2 to 10 do
  if min > A[i, 10 - i + 1] then min := A[i, 10 - i + 1];
//заменям элементы главной диагонали
for i := 1 to 10 do A[i, i] := min;

//вывод матриц в заданно формате
writeln('Исходная матрица');
for i := 1 to 10 do
begin
  for j := 1 to 10 do write(A[i, j]:0:3, ' ');
  writeln;
end; 
writeln('Результат');
for i := 1 to 10 do
begin
  for j := 1 to 10 do write(A[i, j]:0:3, ' ');
  writeln;
end; 


PM MAIL ICQ   Вверх
syoksana
Дата 23.5.2008, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



 
Цитата

Приведу основной алгоритм.


а как быть с 
Цитата

Предусмотреть возможность вывода на экран и в файле.

 
т. е. ещё должен быть и файл, я тут подумала, наверное это так?
нада открыть и записать в него?

Код

program qqq;
var  a,b:array[1..10,1..10]of integer;
min,i,j:integer;
f:file of integer; {file}
begin
reset(f);
rewrite(f);
{// A[10,10] - собственно матрица, B[10, 10] - результат}
randomize;
for i := 1 to 10 do
  for j := 1 to 10 do A[i, j] := random(101);

{//ищем минимум на побочной диагонали}
min := A[1, 10];
for i := 2 to 10 do
  if min > A[i, 10 - i + 1] then min := A[i, 10 - i + 1];
{//заменям элементы главной диагонали }
for i := 1 to 10 do A[i, i] := min;

{//вывод матриц в заданно формате  }
writeln('Исходная матрица');
for i := 1 to 10 do
begin
  for j := 1 to 10 do write(a[i, j]:3, ' ');
  writeln;
end;
writeln('Результат');
for i := 1 to 10 do
begin
  for j := 1 to 10 do write(A[i, j]:3, ' ');
  writeln;
end;

{как осуществить вывод в файл?}

close(f);

end.



Ещё я не умею писать цитаты. Как написать цитату, чтобы было: Цитата(syoksana @ 21.5.2008,  22:05)


Это сообщение отредактировал(а) syoksana - 23.5.2008, 01:31
PM MAIL   Вверх
Filon
Дата 23.5.2008, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 21.5.2008
Где: Челябинск

Репутация: нет
Всего: нет



Цитата(syoksana @ 22.5.2008,  23:25)
т. е. ещё должен быть и файл, я тут подумала, наверное это так?
нада открыть и записать в него?

Добавить перед выводом небольшой кусочек кода
Код

var s: string;

<...>

writeln('Результат вывести в файл или на экран? (file/screen)');
readln(s);
if s = 'file' then
begin
  writeln('Введите имя файла');
  readln(s);
  assign(output, s);
  rewrite(output);
end;


writeln('Результат');
for i := 1 to 10 do
begin
  for j := 1 to 10 do write(A[i, j]:3, ' ');
  writeln;
end;


Это сообщение отредактировал(а) Filon - 23.5.2008, 16:49
PM MAIL ICQ   Вверх
syoksana
Дата 23.5.2008, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Цитата(Filon @ 23.5.2008,  16:48)
Добавить перед выводом небольшой кусочек кода 



Код

program qqq;
var  a,b:array[1..5,1..5]of integer;
min,i,j:integer;
f:file of integer;{file}
s:string;
begin
{// A[10,10] - матрца, b[10, 10] - результат}
randomize;
for i := 1 to 5 do
  for j := 1 to 5 do A[i, j] := random(101);

{//ищем минимум на побочной диагонали}
min := A[1, 5];
for i := 2 to 5 do
  if min > A[i, 5 - i + 1] then min := A[i, 5 - i + 1];
{//заменяем элементы на главной диагонали}
for i := 1 to 5 do A[i, i] := min;

writeln(' Результат вывести в файл или на экран? (file/screen)');
readln(s);
if s = 'file' then
begin
  writeln(' Введите имя файла ');
  readln(s);
  assign(output, s);       {не выводится в файл!}
  rewrite(output);          {может надо прописать путь?}
end;

{//вывод матрицы в заданно формате  }
writeln(' Исходная матрица');             почемуто исходная идентична результату }
for i := 1 to 5 do
begin
  for j := 1 to 5 do write(a[i, j]:3, ' ');
  writeln;
end;
writeln(' Результат'); {надо сформировать новый массив}
for i := 1 to 5 do
begin
  for j := 1 to 5 do begin b[i,j]:=a[i,j];
  write(b[i, j]:3, ' ');  end;
  writeln;
end;

{искомые элементы, т. е. min?}
writeln(' Искомые элементы');
writeln(min);
end.



PM MAIL   Вверх
Filon
Дата 24.5.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 21.5.2008
Где: Челябинск

Репутация: нет
Всего: нет



Виноват, ошибся чутокsmile
На счет файлов: если не писать полный путь, то файл создается в папке с паскалем.
Про искомых элементы: ну я так понял, других искомых элементов тут нет smile
Код

program qqq;
var
  a, b: array[1..5, 1..5]of integer;
  min,i,j:integer;
  f:file of integer;
  s:string;
begin
  randomize;
  for i := 1 to 5 do
    for j := 1 to 5 do A[i, j] := random(101);

  B := A;  { добавлено }
  min := A[1, 5];
  for i := 2 to 5 do
    if min > A[i, 5 - i + 1] then min := A[i, 5 - i + 1];
  for i := 1 to 5 do B[i, i] := min;

  writeln(' Результат вывести в файл или на экран? (file/screen)');
  readln(s);
  if s = 'file' then
  begin
    writeln(' Введите имя файла ');
    readln(s);
    assign(output, s);
    rewrite(output);
  end;

  writeln(' Исходная матрица');
  for i := 1 to 5 do
  begin
    for j := 1 to 5 do write(a[i, j]:3, ' ');
    writeln;
  end;
  writeln(' Результат');
  for i := 1 to 5 do
  begin
    for j := 1 to 5 do write(b[i, j]:3, ' ');
    writeln;
  end;

  writeln(' Искомые элементы');
  writeln(min);
end.


Это сообщение отредактировал(а) Filon - 24.5.2008, 13:18
PM MAIL ICQ   Вверх
syoksana
Дата 25.5.2008, 00:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Цитата(Filon @ 24.5.2008,  13:17)
Виноват, ошибся чутокsmile
На счет файлов: если не писать полный путь, то файл создается в папке с паскалем.
Про искомых элементы: ну я так понял, других искомых элементов тут нет smile

Filinчик, работает, спасибо! 
тут ещё задачка, вернее процедура, что не так?
Оформите процедуру проверки права на использование програмы вашей прдыдущей задачи.Пароль - ваше имя. Если после 3-ей попытки пароль всё-таки неверный - переход на конец программы с выдачей соотвнтствующего сообщения.
Код


Procedure Proverka;
Var
  s:string;
  i:integer;
Begin
  Write ('Введите, пожалуйста, пароль: ');
  Readln (s);
  For i:=1 to n do begin
     If s <> 'оксана' then
      Writeln ('Пароль неверный!');
   end;
Begin
   Proverka;
   Writeln ('Пароль верный.');
end.


мне, что нужно ещё и предыдущ. зад. вписывать? или тоько должна быть процедура? я думаю так

Это сообщение отредактировал(а) syoksana - 25.5.2008, 00:55
PM MAIL   Вверх
Filon
Дата 25.5.2008, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 21.5.2008
Где: Челябинск

Репутация: нет
Всего: нет



Цитата(syoksana @ 24.5.2008,  22:51)
Оформите процедуру проверки права на использование програмы вашей прдыдущей задачи.Пароль - ваше имя. Если после 3-ей попытки пароль всё-таки неверный - переход на конец программы с выдачей соотвнтствующего сообщения.

мне, что нужно ещё и предыдущ. зад. вписывать? или тоько должна быть процедура? я думаю так

В задании написано "оформите процедуру", значит нужно написать только процедуру smile

Код

Procedure Proverka;
Var
  s:string;
  i:integer;
  f: boolean;
Begin
  Write ('Введите, пожалуйста, пароль: ');
  f := false;
  For i:=1 to 3 do { Даем пользователю 3 попытки }
  begin
    Readln (s); { Читаем пароль }
    If s <> 'оксана' then Writeln ('Пароль неверный!') else { Если пароль неверен, выдаем сообщение }
    begin
      f := true; { Иначе выходим из цикла ввода паролей }
      break;
    end;
  end;
  if f then writeln('Пароль верный.') else
  begin
    writeln('Вы использовали 3 попытки ввода пароля. Программа будет закрыта.');
    readln;
    halt(0);
  end;
end;


Это сообщение отредактировал(а) Filon - 25.5.2008, 08:15
PM MAIL ICQ   Вверх
syoksana
Дата 25.5.2008, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Цитата(Filon @ 25.5.2008,  08:14)
В задании написано "оформите процедуру", значит нужно написать только процедуру smile

Хотела спросить про break - это выход из цикла?
halt - программа закрывается? а почему halt(0) ?, зачем 0?


PM MAIL   Вверх
Filon
Дата 25.5.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 21.5.2008
Где: Челябинск

Репутация: нет
Всего: нет



Цитата(syoksana @ 25.5.2008,  11:17)
Хотела спросить про break - это выход из цикла?
halt - программа закрывается? а почему halt(0) ?, зачем 0?

Break - выход из цикла
Exit - выход из подпрограммы
Halt - завершение программы. 0 - код завершения. Вместо halt(0) можно писать просто halt, у меня просто привычка smile
PM MAIL ICQ   Вверх
syoksana
Дата 25.5.2008, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Цитата(Filon @ 25.5.2008,  13:50)
halt(0) можно писать просто halt, у меня просто привычка smile

Понятно, благодарю за помощь!!! smile 

Это сообщение отредактировал(а) syoksana - 25.5.2008, 18:39
PM MAIL   Вверх
syoksana
Дата 27.5.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 19.2.2008

Репутация: нет
Всего: нет



Цитата(volvo877 @ 22.5.2008,  00:26)

Очень просто:

Привет, volvo877!!!
Спасибо Вам за помошь к 1-ой задачке !!!
Я её решила!!! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0581 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.