Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2008, 13:55   #1
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию Помогите найти ошибку

Включить вектор С(N) в качестве заданной строки матрицы.

Код:
Program Lab5;
Uses crt;
Const M=5;
      N=5;
Var A: array[1..M,1..N] of real;
    C: array[1..N] of real;
    zam:real;
    P,I:1..M;
    Q,J,r:1..N;
Begin
 Clrscr;
 Write('BBedite razmernost matricy ne bolee 5*5: ');
 Readln(P,Q);
 Writeln('BBedite elementy matricy:');
 For I:=1 to P do begin
  For J:=1 to Q do
  Begin
   Write('A[',I: 1,',',J: 1,']=');
   Readln(A[I,J])
  End;
  Write ('C[',J,']=');
  Readln(C[J]);
 End;
 Writeln('Kontrolnyi Byvod matricy: ');
 For I:=1 to P do
 Begin
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);
  Writeln;
 End;
 Writeln('Zamena: ');
 r:=Q div 2;
 For I:=1 to r do
 Begin
 zam:=A[1,J];
 A[1,J]:=C[N];
 C[N]:=zam;
 end;
  For I:=1 to P do
 Begin
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);
  Writeln;
 End;
 Readln
End.
Дима82 вне форума Ответить с цитированием
Старый 19.05.2008, 14:28   #2
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

For I:=1 to r do
Begin
zam:=A[1,J];
A[1,J]:=C[N];
C[N]:=zam;
end;

понятно ?
alexBlack вне форума Ответить с цитированием
Старый 19.05.2008, 14:44   #3
Дима82
Форумчанин
 
Аватар для Дима82
 
Регистрация: 09.05.2008
Сообщений: 108
По умолчанию

У меня так и есть, но результат не выходит...
Дима82 вне форума Ответить с цитированием
Старый 19.05.2008, 14:53   #4
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Дима82 Посмотреть сообщение
У меня так и есть, но результат не выходит...
Я про то, что переменная цикла I, вот ее и нужно использовать внутри цикла. И почему цикл только до половины Q ? Хотите заменить только половину строки ? И еще обратите внимание на индексы для C[?] при вводе и замене:

Код:
 Write('BBedite razmernost matricy ne bolee 5*5: ');   
 Readln(P,Q);   
 Writeln('BBedite elementy matricy:');   
 For I:=1 to P do begin  
  For J:=1 to Q do  
  Begin   
   Write('A[',I: 1,',',J: 1,']=');   
   Readln(A[I,J])   
  End;   
  Write ('C[',i,']=');   
  Readln(C[i]);
 End;   
 Writeln('Kontrolnyi Byvod matricy: ');   
 For I:=1 to P do  
 Begin   
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);   
  Writeln;   
 End;   
 Writeln('Zamena: ');   
 r:=Q div 2;   
 For I:=1 to Q do Begin
    zam:=A[1,i];
    A[1,i]:=C[i];
    C[i]:=zam;
 end;   
  For I:=1 to P do  
 Begin   
  For J:=1 to Q do Write (A[I,J]:4:2,'':3);   
  Writeln;   
 End;   
 Readln

Последний раз редактировалось alexBlack; 19.05.2008 в 15:02.
alexBlack вне форума Ответить с цитированием
Старый 19.05.2008, 15:05   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вижу этот код по-моему третий раз, причем к задачам с разными условиями. То, что вы выложили, мы решали в прошлый раз, это был обнен строк верхней половины матрицы с нижней половиной.
Интересно где в этой программе сказано про вставку строки, равной вектору. Кроме того написано отвратительно, куча лишних констант и переменных. Опять этот ручной ввод, при котором вы набираете матрицу 2х2 и у вас ничего не выходит.
Вот я даю решение этой задачи, разберите сами, врубитесь что к чему, если непонятно, спрашивайте.
Код:
Program Lab5;   
Uses crt;   
Var A: array[1..20,1..20] of real;
    C: array[1..20] of real;   
    n,m,i,j,k:integer;
    Label 1;	
Begin   
 Clrscr;
 randomize;
 Write('Vvedite kolichestvo strok n='); readln(n);
 write('Vvedite kolichestvo stolbcov m='); readln(m); 
 Writeln('Ishodnaja matrica:');   
 For I:=1 to n do 
   begin  
    For J:=1 to m do  
      Begin   
        a[i,j]:=random(10)+random;
        write (a[i,J]:5:1);
      End;  
    writeln;
   end;
writeln('Vector C:');
For I:=1 to n do 
   begin    
     c[i]:=random(11)+random+10;
	 write(c[i]:6:1);
   End;
writeln;
//контролируем правильный ввод k
1: Write('Zadajte nomer stroki matricy dlja vstavki k=');readln(k);
   if (k<1)or(k>n)then
      begin
	    writeln('Nedopustimoe znachenie k! Povtorite vvod!');
		readln;
		goto 1;
	  end;
//сдвигаем все строки матрицы от k и больше	 на одну строку вниз
 For j:=1 to m do
    begin
       For i:=n+1 downto k+1 do
       a[i,j]:=a[i-1,j];
      a[k,j]:=c[j];//строке k присваиваем значение вектора
    End;
writeln('Rezultat:');	
 For I:=1 to n+1 do
      begin
       For J:=1 to m do 
	   write(a[i,j]:6:1);
	   writeln;
	  end;  
 Readln   
End.
puporev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите найти ошибку Максим_Леонидович БД в Delphi 4 20.08.2008 23:23
Помогите найти ошибку ( с++ ) JOFRIF Помощь студентам 10 23.05.2008 14:34
Помогите найти ошибку KnDmPetr Паскаль, Turbo Pascal, PascalABC.NET 1 11.04.2008 15:48
Помогите найти ошибку Рената Паскаль, Turbo Pascal, PascalABC.NET 2 05.01.2008 04:29
help!!! Помогите найти ошибку!!! linker13 Общие вопросы Delphi 2 07.07.2007 23:15