Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Паскаль. Задачи на массивы. (http://www.tehnari.ru/f41/t30375/)

Denim1916 20.11.2009 14:00

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

Denim1916 20.11.2009 14:04

и вот еще одна...
Заданный масив целых чисел делится на три части двумя элементами: максимальным и минимальным. определите сумму элементов в каждой части массива. используйте функции для нахождения индексов минимального и максимального элементов и подсчета суммы элементов в указанной части массива..
Благодарю за ранее( особенно тем кто придумал этот сайт огромное спасибо и большой респект и уважуха!!!)))))))

Vladimir_S 20.11.2009 15:24

Цитата:

Сообщение от Denim1916 (Сообщение 262767)
характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик. помогите плиззз решить в паскале

Пожалуйста:

Код:

CONST
 M=5;
 N=7;
 R=50;
VAR
 A:ARRAY[1..M,1..N] of INTEGER;
 i,j,k,Min:INTEGER;
 Number,Charac:ARRAY[1..N] of INTEGER;

BEGIN
 Randomize;
 FOR i:=1 TO M DO
  BEGIN
  FOR j:=1 TO N DO
    BEGIN
    A[i,j]:=Random(2*R)-R;
    Write(A[i,j]:4);
    END;
  WriteLn;
  END;
 WriteLn;

 FOR j:=1 TO N DO
  BEGIN
  Charac[j]:=0;
  i:=1;
  REPEAT
    IF A[i,j]<0 THEN
    Charac[j]:=Charac[j]-A[i,j];
    INC(i,2);
  UNTIL i>M;
  END;

  FOR j:=1 TO N DO Write(Charac[j]:4);
  Writeln;
  Writeln;

  FOR k:=1 TO N DO
  BEGIN
    Min:=R*((M div 2)+1);
    FOR j:=1 TO N DO
    IF Charac[j]<Min THEN
      BEGIN
      Min:=Charac[j];
      Number[k]:=j;
      END;
    Charac[Number[k]]:=R*((M div 2)+2);
  END;

 FOR i:=1 TO M DO
  BEGIN
  FOR j:=1 TO N DO
    Write(A[i,Number[j]]:4);
  WriteLn;
  END;

ReadLn;

END.

Значения констант M (количество строк), N (количество столбцов) и R (граница диапазона; все элементы таблицы располагаются в интервале от -R до R) можете подставить свои.

Vladimir_S 20.11.2009 22:09

Цитата:

Сообщение от Denim1916 (Сообщение 262768)
и вот еще одна...
Заданный масив целых чисел делится на три части двумя элементами: максимальным и минимальным. определите сумму элементов в каждой части массива. используйте функции для нахождения индексов минимального и максимального элементов и подсчета суммы элементов в указанной части массива..
Благодарю за ранее( особенно тем кто придумал этот сайт огромное спасибо и большой респект и уважуха!!!)))))))

Как-то так. Ничего, что для индексов использована процедура, а не функции? Если это критично, процедуру можно разбить на две функции, просто программа еще раздуется. Ну а уж подсчет сумм в какие-то функции упихивать - по-моему, перебор. По здравому смыслу тут вообще подпрограммы ни нафиг не нужны!

Код:

CONST
 N=7;
 R=50;
TYPE
 AR=ARRAY[1..N] of INTEGER;
VAR
 A:AR;
 i,Imax,Imin,S1,S2,S3,b1,b2:INTEGER;

PROCEDURE Search_Min_Max(As:AR; VAR IminS, ImaxS:INTEGER);
 VAR
  Max,Min,Is,IminScur,ImaxScur:INTEGER;
 BEGIN
  Max:=-(R+1);
  Min:=R+1;
  FOR Is:=1 TO N DO
  BEGIN
    IF As[Is]>Max THEN
    BEGIN
      Max:=A[Is];
      ImaxScur:=Is;
    END;
    IF As[Is]<Min THEN
    BEGIN
      Min:=A[Is];
      IminScur:=Is;
    END;
  END;
  ImaxS:=ImaxScur;
  IminS:=IminScur;
 END;

BEGIN
 Randomize;
 FOR i:=1 TO N DO
  BEGIN
    A[i]:=RANDOM(2*R)-R;
    Write(A[i]:4);
  END;
 WriteLn;
 WriteLn;

 Search_Min_Max(A,Imin,Imax);
 IF Imin<Imax THEN
  BEGIN
  b1:=Imin;
  b2:=Imax;
  END ELSE
  BEGIN
  b1:=Imax;
  b2:=Imin;
  END;

 S1:=0;
 S2:=0;
 S3:=0;

 FOR i:=1 TO b1 DO
  S1:=S1+A[i];
 FOR i:=b1 TO b2 DO
  S2:=S2+A[i];
 FOR i:=b2 TO N DO
  S3:=S3+A[i];

 WriteLn('S1= ',S1);
 WriteLn('S2= ',S2);
 WriteLn('S3= ',S3);

 ReadLn;

 END.

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


Часовой пояс GMT +4, время: 14:19.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.