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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.02.2009, 14:05   #1
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию Помогите в освоении Паскаля

Пытаюсь освоить паскаль. Есть задачка: есть двумерный массив и два одномерных, все отрицательные числа из двумерного массива записать в один одномерный и все положительные в другой одномерный.
Мне решение всей программы не нужно, только вот этот момент: каким образом записать из двумерного в одномерный? я пытался вот так:
if A[i,j]<0 then
B[k]:=A[i,j];
.....

но так ничего не записывает
когда пытаюсь отдельно в одномерный массив вписать строку либо столбец - высвечивает ошибку: Type is mismatch

Последний раз редактировалось mihali4; 11.02.2009 в 01:41.
Hworang вне форума
Старый 08.02.2009, 14:06   #2
начинающий кодер
только учусь!
Форумчанин
 
Аватар для начинающий кодер
 
Регистрация: 08.02.2009
Сообщений: 124
По умолчанию

а типы у массивов одинаковые?
Код:
program sred;
uses crt;
var i,k,k1,n,m,j:integer;
 a:array[1..100,1..100] of integer;
 b:array[1..100] of integer;
 c:array[1..100] of integer;
 begin
clrscr; 
 writeln('vvedite n ');
 readln(n);
 writeln('vvedite m ');
 readln(m);
 k:=1;k1:=1;
 for i:=1 to n do
 for j:=1 to n do begin
 a[i,j]:=random(100)-50;
 if a[i,j]<0 then begin b[k]:=a[i,j];inc(k);end;
  if a[i,j]>=0 then begin c[k1]:=a[i,j];inc(k1);end;
 write (' a[',i,j,']=',a[i,j]);
 writeln;
 end;

 for i:=1 to k-1 do
 write (' ',b[i]);
 writeln;
 writeln;
 for i:=1 to k1-1 do
 write (' ',c[i]);
 writeln;
readln;
end.
вот должно работать!
«Я знаю, что ничего не знаю, но многие не знают и этого».

Последний раз редактировалось начинающий кодер; 08.02.2009 в 14:27. Причина: исправил синтаксические ошибки все работает!
начинающий кодер вне форума
Старый 08.02.2009, 14:09   #3
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

наверное i и j переменные цикла ?
а k - тоже увеличивается на 1 когда условие удовлетворено ?
если нет - то может так :
Код:
k := 0;
if A[i,j]<0 then 
  begin 
  inc(k);
  B[k]:=A[i,j];
  end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума
Старый 08.02.2009, 14:16   #4
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию

Цитата:
Сообщение от начинающий кодер Посмотреть сообщение
а типы у массивов одинаковые?
да, типы у всех одинаковые


Цитата:
Сообщение от Kotofff Посмотреть сообщение
наверное i и j переменные цикла ?
а k - тоже увеличивается на 1 когда условие удовлетворено ?
если нет - то может так :
Код:
k := 0;
if A[i,j]<0 then 
  begin 
  inc(k);
  B[k]:=A[i,j];
  end;
через процедуры делаю.... А заполняется через рандом, B, C - заполняются нулями, т.е. так:
Код:
for k:=1 to p do
B[k]:=0;
for l:=1 to q do
C[l]:=0;
а что это "inc(k)" ? я незнаком с этой записью....
Hworang вне форума
Старый 08.02.2009, 14:17   #5
начинающий кодер
только учусь!
Форумчанин
 
Аватар для начинающий кодер
 
Регистрация: 08.02.2009
Сообщений: 124
По умолчанию

Код:
inc(k)
равносильно
Код:
к:=к+1;
«Я знаю, что ничего не знаю, но многие не знают и этого».
начинающий кодер вне форума
Старый 08.02.2009, 14:19   #6
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию

понял. все равно не работает....
Hworang вне форума
Старый 08.02.2009, 14:20   #7
начинающий кодер
только учусь!
Форумчанин
 
Аватар для начинающий кодер
 
Регистрация: 08.02.2009
Сообщений: 124
По умолчанию

Цитата:
понял. все равно не работает....
а полный код можно посмотреть??
«Я знаю, что ничего не знаю, но многие не знают и этого».
начинающий кодер вне форума
Старый 08.02.2009, 14:23   #8
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию

конечно!
Код:
program pr6;
uses crt;
  const
      n=5;
      m=5;
      k=25;
      l=25;
   type
       typeMas=array[1..n,1..m] of integer;
       typeMas1=array[1..k] of integer;
       typeMas2=array[1..l] of integer;
   var
       A:TypeMas;
       B:typeMas1;
       C:typeMas2;
       i,j,p,q:integer;

   Procedure Massiv;
   begin
    randomize;
     for i:=1 to n do
      for j:= 1 to m do
       A[i,j]:=random(100)-random(100);
   end;

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

   procedure writeResult;
   var kolvo_otric, kolvo_poloj : integer;
       vse_poloj, vse_otric:boolean;
       begin
            for p:=1 to k do
            B[p]:=0;
            for q:=1 to l do
            C[q]:=0;
            p:=0;
            if A[i,j]<0 then
            begin
            inc(p);
            B[p]:=A[i,j];

            end;
            for p:=1 to k do
            write(B[p]:8);
         end;


begin
clrscr;
    massiv;
    writeMas;
    writeResult;
    read(i);
end.
здесь написано только для первого случая, когда <0
Hworang вне форума
Старый 08.02.2009, 14:32   #9
начинающий кодер
только учусь!
Форумчанин
 
Аватар для начинающий кодер
 
Регистрация: 08.02.2009
Сообщений: 124
По умолчанию

попробуй мой код!!! в твоем куча ошибок например перед этим
Код:
if A[i,j]<0 then
            begin
             inc(p);    B[p]:=A[i,j];
надо р присваивать значение 1 то есть
Код:
р:=1;
так как p=25 ты егоувеличиваешь на 1 и он становится 26 а массив только до 25!! и сначала
Код:
B[p]:=A[i,j];
а потом
Код:
inc(p);
и зануление одномерных массивов можешь вообще выкинуть!!!
Код:
program pr6;
uses crt;
  const
      n=5;
      m=5;
   k=25;
   l=25;
    
   type
       typeMas=array[1..n,1..m] of integer;
       typeMas1=array[1..k] of integer;
       typeMas2=array[1..l] of integer;
   var
       A:TypeMas;
       B:typeMas1;
       C:typeMas2;
   Procedure Massiv(var a1:typemas);
   var i,j:integer;
   begin
    randomize;
     for i:=1 to n do
      for j:= 1 to m do
       A1[i,j]:=random(100)-random(100);
   end;

   procedure writeMas( var a2:typemas);
       var i,j:integer;
	   begin
         for i:=1 to n do begin
          for j:=1 to m do begin
             write(A2[i,j]:4);
           end;
           writeLn;
         end;
         writeLn;
       end;

   procedure writeResult(var a3:typemas; var a4:typemas1; var a5:typemas2);
   var i,j,k11,k12,p: integer;
 
       begin
            k11:=1;
			k12:=1;
			for i:=1 to n do
 for j:=1 to n do begin
 a3[i,j]:=random(100)-50;
 if a3[i,j]<0 then begin a4[k11]:=a3[i,j];inc(k11);end;
  if a[i,j]>=0 then begin a5[k12]:=a3[i,j];inc(k12);end;

            end;writeln;
            for p:=1 to k11-1 do
            write(a4[p]:8);writeln;
			for p:=1 to k12-1 do
            write(a5[p]:8);
         end;
begin
clrscr;
    massiv(a);
    writeMas(a);
    writeResult(a,b,c);
    readln;
end.
«Я знаю, что ничего не знаю, но многие не знают и этого».

Последний раз редактировалось начинающий кодер; 08.02.2009 в 15:00. Причина: и этот работает!!!
начинающий кодер вне форума
Старый 08.02.2009, 14:35   #10
Hworang
Пользователь
 
Регистрация: 11.10.2007
Сообщений: 24
По умолчанию

да, твой работает.
прост хотел в своем разобраться, сейчас буду искать ошибки..... попытаюсь исправить.
Спасибо за помощь
Hworang вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать прогу из Паскаля в Делфи! Toxass Общие вопросы Delphi 28 27.09.2009 15:36
перенос с паскаля на си Ядовитый Общие вопросы C/C++ 2 29.06.2007 13:17