Jump to content

Помогите химику с паскалем.


Ged

Recommended Posts

Гайс, учусь на хим факе, помогите с лабой кто-нибудь...

Задание:Составить программу,отладить ее и произвести на ЭВМ соответ. вычисления

f8623a8a5162.png

 

P.S. Кэр Лаэда, я вызываю тебя! ;D

Link to comment
Share on other sites

Хим = химический? ::)

К сожалению "мой" паскаль на школьном уровне :snorlax:

да. факультет химических технологий
Link to comment
Share on other sites

Ged, а что за программу-то? Привет.

добрый вечер. Блин, фотка ушла с хостинга,ща перезалью
Link to comment
Share on other sites

Кэр Лаэда, ггг, уже час тут сидиш ждёш его :crazy:

Link to comment
Share on other sites

Совсем забыл Паскаль  :( Привык к C.

 

var 
  x, z:array[1..100, 1..100] of real;
  i, j, m, n, k, l:integer;
  sum:real;
begin
writeln('Введите размер матрицы(MxN)');
readln(m, n);
writeln('Введите матрицу');
for i := 1 to m do //Ввод
  for j := 1 to n do
    read(x[i,j]);
writeln('Удаляемый столбец k:'); readln(k);
writeln('Номер строки l:'); readln(l);
z := x;
for i:= 1 to n do
  for j := k to m-1 do
    begin
      z[i,j] := z[i, j+1]; //Смещение столбцов
    end;
dec(n); //Уменьшение кол-ва столбцов
for i := 1 to m do
  begin
    for j := 1 to n do begin
      write(z[i,j], ' ');
      if (i = l) then sum := sum + z[i,j]; // Нахождение суммы
      end;
    writeln;
  end;
writeln('Сумма ', l, '-ой строки матрицы Z: ', sum);
end.

Link to comment
Share on other sites

Совсем забыл Паскаль  :( Привык к C.

 

var 
  x, z:array[1..100, 1..100] of real;
  i, j, m, n, k, l:integer;
  sum:real;
begin
writeln('Введите размер матрицы(MxN)');
readln(m, n);
writeln('Введите матрицу');
for i := 1 to m do //Ввод
  for j := 1 to n do
    read(x[i,j]);
writeln('Удаляемый столбец k:'); readln(k);
writeln('Номер строки l:'); readln(l);
z := x;
for i:= 1 to n do
  for j := k to m-1 do
    begin
      z[i,j] := z[i, j+1]; //Смещение столбцов
    end;
dec(n); //Уменьшение кол-ва столбцов
for i := 1 to m do
  begin
    for j := 1 to n do begin
      write(z[i,j], ' ');
      if (i = l) then sum := sum + z[i,j]; // Нахождение суммы
      end;
    writeln;
  end;
writeln('Сумма ', l, '-ой строки матрицы Z: ', sum);
end.

спасибо огромное ;)
Link to comment
Share on other sites

Лучше бы сам решил  :facepalm:

знал бы как решать-решил бы сам. Я смотрю умников у коммьюнити варспы не убавилось :facepalm:
Link to comment
Share on other sites

знал бы как решать-решил бы сам. Я смотрю умников у коммьюнити варспы не убавилось :facepalm:

 

Для того дают задания, что бы развить мышление. Потратил бы время на разработку алгоритма, почитал бы документацию по паскалю... Следующие задания сам бы решал.

Link to comment
Share on other sites

Для того дают задания, что бы развить мышление. Потратил бы время на разработку алгоритма, почитал бы документацию по паскалю... Следующие задания сам бы решал.

хорошо мастер, в следующий раз так и сделаю.Алюминь
Link to comment
Share on other sites

Как вариант:

 

program xim;

uses crt;

var
   i, j: integer;
   m, n, k, l, p: integer;
   x, z: array[1..50, 1..50] of real;
   summa: real;

begin
     clrscr;

     writeln('Vvedite razmernost massiva X:');
     write('m = '); read(m);
     write('n = '); read(n);

     writeln('Vvedite elementi massiva X:');

     for i:=1 to m do
     begin
          for j:=1 to n do
          begin
               write('X[', i, ', ', j,'] = '); read(x[i, j]);
          end;
     end;

     writeln('Vvedite nomer stolbca k:');
     write('K = '); read(k);


     writeln('Massiv Z:');

     for i:=1 to m do
     begin
          p := 1;

          for j:=1 to n do
          begin
               if (j<>k) then
               begin
                   z[i, p] := x[i, j];
                   write(Z[i, p]:6:2, ' ');

                   p := p + 1;
               end;
          end;
          writeln;
     end;

     writeln('Vvedite nomer stroki L: ');
     write('L = '); read(l);

     for j:=1 to n-1 do
     begin
          summa := summa + z[l, j];
     end;

     writeln('Summa elementov stroki L = ', summa:6:2);

     readln;
     readln;
end.

Link to comment
Share on other sites

зачем вы жестко задаете диапазоны? В паскале вроде есть динамические массивы... И где проверка входных данных?

Я б такое решение не принял :D

Link to comment
Share on other sites

зачем вы жестко задаете диапазоны? В паскале вроде есть динамические массивы... Я б такое решение не принял

 

Я вот думал с помощью указателей. Но так как пример для начинающих, смысл так мудрить?

Link to comment
Share on other sites

Fobb, да, действительно, можно было бы использовать динамические массивы. Проверка данных тоже, конечно же, нужна. Но не химикам. У них это не является профильным предметом, так что никто пилить за это не будет.

Ну, конкретно мой препод про границы массивов бы ничего не сказал, а вот из-за отсутствия проверки данных мог бы покарать.

Link to comment
Share on other sites

Fobb, да, действительно, можно было бы использовать динамические массивы. Проверка данных тоже, конечно же, нужна. Но не химикам. У них это не является профильным предметом, так что никто пилить за это не будет.

Ну, конкретно мой препод про границы массивов бы ничего не сказал, а вот из-за отсутствия проверки данных мог бы покарать.

 

и ктому же, ты неверно решил первую часть задания  :good:

Link to comment
Share on other sites

Epikur, разве? В каком месте? Проверил, все работает.

 

Массив Z = Массив X без столбца k. А у тебя что?

сумма 3 строки чему будет равна без 3 элемента?

Link to comment
Share on other sites

Epikur, не совсем понимаю ход твоих мыслей.

1. Результат работы программы Эпикура

2. Результат работы программы Кэр Лаэды

Link to comment
Share on other sites

Epikur, ты поступил простейшим способом. Так ведь не интересно. Просто переместить элементы же не является оптимальным решением. А у меня, да, косяк, если матрица не квадратная, почему-то. Сейчас гляну.

Link to comment
Share on other sites

Epikur, ты поступил простейшим способом. Так ведь не интересно. Просто переместить элементы же не является оптимальным решением. А у меня, да, косяк, если матрица не квадратная, почему-то. Сейчас гляну.

 

у тебя во втором цикле косяк

Link to comment
Share on other sites

Все, нашел.  На выделенном участке кода слегка опечатался и поменял местами m и n.

P.S. Выделенный код не выделился в теге code, лол :(

uses CRT;
var 
  x, z:array[1..100, 1..100] of real;
  i, j, m, n, k, l:integer;
  sum:real;
begin
writeln('Введите размер матрицы(MxN)');
readln(m, n);
writeln('Введите матрицу');
for i := 1 to m do //Ввод
  for j := 1 to n do
    read(x[i,j]);
writeln('Удаляемый столбец k:'); readln(k);
writeln('Номер строки l:'); readln(l);
z := x;
for i:= 1 to m do
  for j := k to n-1 do
    begin
      z[i,j] := z[i, j+1]; //Смещение столбцов
    end;
dec(n); //Уменьшение кол-ва столбцов
for i := 1 to m do
  begin
    for j := 1 to n do begin
      write(z[i,j], ' ');
      if (i = l) then sum := sum + z[i,j]; // Нахождение суммы
      end;
    writeln;
  end;
writeln('Сумма ', l, '-ой строки матрицы Z: ', sum);
end.

 

 

Link to comment
Share on other sites

Получил 5 баллов, спасибо и на этом. З.Ы. препод сказал,что слишком объемно делал(использовал код Кэра)

Link to comment
Share on other sites

Ged, как-то странно. Спроси у препода, как можно сделать менее объемно, лол. Ну, думаю, тему можно закрывать.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...