• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите написать программу

  • Автор темы Автор темы 21pmi
  • Дата начала Дата начала

21pmi

Ученик
Регистрация
27 Окт 2010
Сообщения
3
Реакции
0
Баллы
0
Помогите написать программу

В делфи:
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик (оформить в виде проце¬дуры).
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрица¬тельный элемент (оформить в виде функции).
 
В делфи:
Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик (оформить в виде проце¬дуры).
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрица¬тельный элемент (оформить в виде функции).
На Паскале - могу помочь, а Делфи - извините, знаю плохо.
 
блин надо в делфи....
 
Я знаю делфи, но задание понимаю с трудом. Владимир, может, совместными силами?
 
Я знаю делфи, но задание понимаю с трудом. Владимир, может, совместными силами?
Ох, не ту кнопку нажал - вечно путаюсь.
Ну вот, это решение в чистом Паскале:

Код:
CONST
 N=5; {Number of lines}
 M=7; {Number of columns}
TYPE
 Matrix=ARRAY[1..N,1..M] of Integer;
 Col=RECORD
      Sm:ARRAY[1..M] of Integer;
      Bo:ARRAY[1..M] of Boolean;
     END;
VAR
 i,j:Integer;
 M_in,M_out:Matrix;
 C:Col;

PROCEDURE Ordering(M1:Matrix; var M2:Matrix);
 var
  Numb:Array[1..M] of BYTE;
  Sums:Array[1..M] of WORD;
  Sum:WORD;
  Num:BYTE;
  i0,j0,j1:Integer;
 begin
  For j0:=1 to M do
   begin
    Numb[j0]:=j0;
    Sums[j0]:=0;
    For i0:=1 to N do
     If M1[i0,j0]<0 then Sums[j0]:=Sums[j0]-M1[i0,j0];
   end;

  For j1:=1 to M do
   For j0:=1 to M-j1 do
    If Sums[j0]>Sums[j0+1] then
     begin
      Sum:=Sums[j0];
      Sums[j0]:=Sums[j0+1];
      Sums[j0+1]:=Sum;
      Num:=Numb[j0];
      Numb[j0]:=Numb[j0+1];
      Numb[j0+1]:=Num;
     end;

  For i0:=1 to N do
   For j0:=1 to M do
    M2[i0,j0]:=M1[i0,Numb[j0]];

 end;

FUNCTION Search_Sums(Mss:Matrix):Col;
 var
  i0,j0:BYTE;
  SS:Col;
  b:Boolean;
 begin
  For j0:=1 to M do
   begin
    b:=false;
    i0:=0;
    Repeat
     INC(i0);
     If Mss[i0,j0]<0 then b:=true;
    Until b or (i0=N);
    If b then SS.Bo[j0]:=true else SS.Bo[j0]:=false;
    If b then
     begin
      SS.Sm[j0]:=0;
      For i0:=1 to N do
       SS.Sm[j0]:=SS.Sm[j0]+Mss[i0,j0];
     end else SS.Sm[j0]:=0;
   end;
  Search_Sums:=SS;
 end;

BEGIN
 Randomize;
 For i:=1 to N do
  begin
   For j:=1 to M do
    begin
     M_in[i,j]:=Random(100)-20;
     Write(M_in[i,j]:5);
    end;
   Writeln;
  end;
 WriteLn;
 Ordering(M_in,M_out);
 For i:=1 to N do
  begin
   For j:=1 to M do
    Write(M_out[i,j]:5);
   Writeln;
  end;
 WriteLn;
 C:=Search_Sums(M_in);
 For j:=1 to M do
  If C.Bo[j] then
   Writeln('Column N ',j,'  ',C.Bo[j],' Sum= ',C.Sm[j])
  else
   Writeln('Column N ',j,'  ',C.Bo[j]);
 Writeln;
 ReadLn;
END.
К сожалению, в силу идиотского требования оформить вторую часть непременно в виде функции, пришлось применять записи, потому как надо получить два вида информации: о наличии отрицательных чисел в столбце и (при наличии) о сумме столбца. С процедурой было бы проще, но нет - подай им функцию! Ну получите...
 
ты о какой кнопке?
Да просто прежде чем выложить программу написал короткий ответ, что сейчас, мол, на Паскале сделаю, да вместо "цитата" нажал "правка" и влез в твой пост. И не заметил. Сейчас всё исправил.
 
А, ну это мелочи
 
Владимир, у меня тубро и борланд паскаль заругались на неправильный тип результата тут:
Код:
FUNCTION Search_Sums(Mss:Matrix):[B]Col[/B];
не пропускает тип Запись. А создал консольное приложение в делфи - запустилось, посчитало. Ты в какой среде писал прогу?
 
Владимир, у меня тубро и борланд паскаль заругались на неправильный тип результата тут:
Код:
FUNCTION Search_Sums(Mss:Matrix):[B]Col[/B];
не пропускает тип Запись. А создал консольное приложение в делфи - запустилось, посчитало. Ты в какой среде писал прогу?
Free Pascal. Причем какой-то изрядно старый.
 
Вон оно что..

Работа оказалась проще, чем мне сперва показалось. Всего-то и делов, перестроить вывод под граф.интерфейс, да форму создать. Все сделано, смотрите вложение.

Владимир, запусти из архива экзешник, проверь, пожалуйста. Но вроде все правильно
 

Вложения

Вон оно что..

Работа оказалась проще, чем мне сперва показалось. Всего-то и делов, перестроить вывод под граф.интерфейс, да форму создать. Все сделано, смотрите вложение.

Владимир, запусти из архива экзешник, проверь, пожалуйста. Но вроде все правильно
Посмотрел. Супер!

P.S. "В порядке повышения образованности" - а что, Делфи не может напрямую выводить значения булевых переменных? Обязательно в строки переводить?
 
Может, но только 0 и 1 и не во все типы объектов
 
Огромное спасибо!!!! Я когда текст программы увидела мне дурно стало, я бы в жизни ее не написала бы
 
Огромное спасибо!!!! Я когда текст программы увидела мне дурно стало, я бы в жизни ее не написала бы
Знаете... вот честное слово - было бы желание. А если есть, то всё получится, ничего там сверхсложного. Удачи!
 
Рад был помочь. БОльшую работу конечно проделал Владимир
 
Назад
Сверху