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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2014, 18:10   #1
Julia1
Пользователь
 
Регистрация: 03.02.2014
Сообщений: 14
По умолчанию почему выдает ошибку паскаль? Program3.pas(30) : Встречено 'and', а ожидался оператор

:conf used:
(дана матрица 5*10 вывести первую строку если каличество отрицательных элементов = каличеству положительных (ноль не учитывается))
Код:
program Project1;
var
a: array[1..5,1..10] of integer;
n,m,i,j,k: integer;
f: boolean;

 begin
  write('Введите размеры массива n, m: ');
  readln(n,m);
  for i:=1 to n do
    begin
     for j:=1 to m do
      begin
      a[i,j]:=random(199)-99;
      write(a[i,j]:4);
      end;
    writeln;
    end;
 i:=1;
 k:=0;
 
 for j:=1 to m do
  begin
  if a[i,j]>0 then k:=k+1
    else l:=K-1;
  if k=l then  writeln (a[1,j],'')
   else
  write ('0');
 readln;
 and. {30 строка}

Последний раз редактировалось Stilet; 08.02.2014 в 19:07.
Julia1 вне форума Ответить с цитированием
Старый 08.02.2014, 18:24   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

1) Кросспостинг запрещен - http://programmersforum.ru/showthread.php?t=254663
2) Нужно писать end, а не and
3) Еще есть ошибки логические
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.02.2014, 18:29   #3
Julia1
Пользователь
 
Регистрация: 03.02.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1) Кросспостинг запрещен - http://programmersforum.ru/showthread.php?t=254663
2) Нужно писать end, а не and
3) Еще есть ошибки логические
это не Кросспостинг - это я написала программу заново по одному и тому же условию и сдесь как вы уже заметили другие ошибки.


спасибо большое за ответ

Последний раз редактировалось Stilet; 08.02.2014 в 22:16.
Julia1 вне форума Ответить с цитированием
Старый 08.02.2014, 18:33   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

1) Есть кнопка "Правка" для дописывания своего поста
2) Пожалуйста
3) Остальные ошибки будем исправлять?
4) Задача осталась та же, так что можно считать кросспостом, но давайте, не будем об этом спорить, Вам ведь нужно задачу решить, а уж модератор решит, что оставить, а что удалить/слить в одну тему
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.02.2014, 18:43   #5
Julia1
Пользователь
 
Регистрация: 03.02.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1) Есть кнопка "Правка" для дописывания своего поста
2) Пожалуйста
3) Остальные ошибки будем исправлять?
4) Задача осталась та же, так что можно считать кросспостом, но давайте, не будем об этом спорить, Вам ведь нужно задачу решить, а уж модератор решит, что оставить, а что удалить/слить в одну тему
да, мне нужно её решить... но увы даже после исправления не могу понять почему не выводит на экран первую строку?
Julia1 вне форума Ответить с цитированием
Старый 08.02.2014, 19:01   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

1) Какое все-таки условие:
Цитата:
нужно ввести матрицу размером M*N и если в первой строке количество отрицательных элементов равно количеству положительных (ноль не учитывается), то нужно вывести эту строчку на экран если нет то на экран выводится ноль.
или
Цитата:
дана матрица 5*10 вывести первую строку если каличество отрицательных элементов = каличеству положительных (ноль не учитывается))
2) Используйте в будущем для выкладывания кода кнопочку решетка #
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.02.2014, 19:11   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Закрыл кросспост.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.02.2014, 19:28   #8
Julia1
Пользователь
 
Регистрация: 03.02.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1) Какое все-таки условие:

или

2) Используйте в будущем для выкладывания кода кнопочку решетка #
условие - 2
Julia1 вне форума Ответить с цитированием
Старый 08.02.2014, 19:46   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Такое условие подразумевает фиксированные m и n (не нужно запрашивать у пользователя). Также из этого условия можно скорее понять, что считать количество нужно по всей матрице, а не по 1 строке.
Код:
k := 0;
for i := 1 to n do
  for j := 1 to m do
    if a[i, j] > 0 then
      inc(k)
    else if a[i, j] < 0 then
      dec(k);
if k = 0 then
//выводим строку
Как вывести строку матрицы Вы можете подсмотреть в предыдущей теме.
Если хочется кода покороче, то вместо кучи if else можно написать inc(k, ord(a[i, j] > 0) - ord(a[i, j] < 0));.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.02.2014, 20:27   #10
Julia1
Пользователь
 
Регистрация: 03.02.2014
Сообщений: 14
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Такое условие подразумевает фиксированные m и n (не нужно запрашивать у пользователя). Также из этого условия можно скорее понять, что считать количество нужно по всей матрице, а не по 1 строке.
Код:
k := 0;
for i := 1 to n do
  for j := 1 to m do
    if a[i, j] > 0 then
      inc(k)
    else if a[i, j] < 0 then
      dec(k);
if k = 0 then
//выводим строку
Как вывести строку матрицы Вы можете подсмотреть в предыдущей теме.
Если хочется кода покороче, то вместо кучи if else можно написать inc(k, ord(a[i, j] > 0) - ord(a[i, j] < 0));.
почему мы должны перебор делать по всей матрицы когда нам нужно вывести только первую строку по условию задачи? и всё же когда я запускаю программу PascalABC не печатает первую строку он печатает только '0'!
Код:
  program Project1; 
var
  a: array[1..5,1..10] of integer;
  n,m,i,j,k: integer;
  f: boolean;
 begin
  write('Введите размеры массива n, m: ');
  readln(n,m);
  for i:=1 to n do
    begin
     for j:=1 to m do
      begin
       a[i,j]:=random(199)-99;
       write(a[i,j]:4);
      end;
     writeln;
     end;
  k := 0;
  for i:= 1 to n do
   begin
  for j := 1 to m do
    begin
    if a[i, j] > 0 then
      inc(k)
    else if a[i, j] < 0 then
      dec(k);
      end;
      end;
 if k = 0 then
  f:=true;
  if f then
   for j := 1 to m do
    write(a[1, j], ' ')
  else
    write(0);

    readln;
    
end.

Последний раз редактировалось Stilet; 08.02.2014 в 22:24.
Julia1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему выдает ошибку??? marales Помощь студентам 6 30.12.2012 16:17
Выдает ошибку [Error] Unit1.pas(46): Method identifier expected ckbdf16 Помощь студентам 5 24.06.2011 09:22
Выдает ошибку [Warning] Unit1.pas(225): FOR-Loop variable Neroaz Общие вопросы Delphi 8 26.03.2010 02:20
при поиске по базе выдает ошибку - Пропущен оператор в выражении frai БД в Delphi 1 09.11.2007 23:01