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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2009, 11:18   #1
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию не могу разобраться в чем ошибка

Вот только начал в вузе изучать паскаль и пока почти ничего не понимаю, первая моя задача ))

Найти сумму нечетных элементов до первого положительного и кол-во отрицательных после него

Код:
program z1;
const
n=100;
var s1,s2,i:integer; x:array[1..n] of integer;
begin
    s1:=0;
    s2:=0;
    for i:=1 to n do
    while x[i]<0 do
    while i<=0 do
begin
      if x[i]/2 then
    else
        S1:=x[i]+S1;
      I:=I+1;
    end;
    while I<=n do
    begin
      if x[i]<0 then  НА ЭТОЙ СТРОЧКЕ error 40: Boolean expression expected
        S2:=S2+1
      else
      begin
      end;
      Вывод S1, S2; и тут не знаю как правильно сделать
    end;
end.

Последний раз редактировалось Stilet; 23.04.2009 в 11:37.
pavel42 вне форума Ответить с цитированием
Старый 23.04.2009, 11:51   #2
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Во-первых ЭТО что:
Код:
if x[i]/2 then
else...
?
Лучше не разбираться в чём ошибка, а побольше подумать над задачей и её решением, т. е. как в принципе можно её решить, не углубляясь в языки программирования. Далее повнимательнее изучить основные конструкции паскаля и после этого приступать к написанию программы. Я могу написать решение, но от этого "разобраться в чём ошибка", к сожалению не получится, задачу нужно решать самому.
P.S. Кнострукции типа
Код:
for i:=1 to n do
    while x[i]<0 do
    while i<=0 do
begin...
лучше вообще никогда не использовать, они даже выглядят страшно!
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс
Олвин вне форума Ответить с цитированием
Старый 23.04.2009, 12:03   #3
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

спасибо за совет, если не сложно напишите основное в проге
pavel42 вне форума Ответить с цитированием
Старый 23.04.2009, 14:04   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Найти сумму нечетных элементов до первого положительного и кол-во отрицательных после него
Раз уж ты в панике предложу свой вариант вместо твоего корявства:
Код:
Const n=100
 var s1,s2,i:integer; x:array[1..n] of integer;
begin
 {Вводим массив и сразу все находим}
 i:=1; 
  readln(x[i]);
  s1:=s1+x[i];
 while (x[i]<0) and (i<n) do begin
  inc(i)
  readln(x[i]);
  if x[i] mod 2 =0 then  s1:=s1+x[i];
 end; 
 while i<=n do begin
  readln(x[i]);
  if x[i]<0 then inc(s2);
  inc(i);
 end;
 end;
writeln(s1,s2);
end.
код не тестировал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.04.2009, 14:06   #5
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

[QUOTE=Олвин;247019][COLOR="DarkGreen"]Во-первых ЭТО что:
[CODE]if x[i]/2 then
else...

это я хотел написать то что если X[i] делиться на 2 тогда... ну и там уже продолжение проги (((((((((((((
pavel42 вне форума Ответить с цитированием
Старый 23.04.2009, 14:12   #6
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

runtime error 106 at 0000:00c5
error 106: invalid numeric format.

Последний раз редактировалось pavel42; 23.04.2009 в 14:15.
pavel42 вне форума Ответить с цитированием
Старый 23.04.2009, 15:57   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Подкорректированный вариант Stilet:
Код:
uses crt;
Const n=7;

 var s1,s2,i:integer;
 x:array[1..n] of integer;
begin
clrscr;
 {Вводим массив и сразу все находим}
 i:=1; 
 s1:=0;
 s2:=0;
 readln(x[i]);
 if x[i] mod 2<>0 then s1:=s1+x[i];

 while (x[i]<0) and (i<n) do
  begin
  inc(i);
  readln(x[i]);
  if x[i] mod 2 <> 0 then
   s1:=s1+x[i];
  end;

 while i<=n do
  begin
  inc(i);
  readln(x[i]);
  if x[i]<0 then inc(s2);
  end;

writeln('s1=',s1,'  s2=',s2);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.04.2009, 17:45   #8
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

Все работает...Большое спасибо ))

Последний раз редактировалось pavel42; 23.04.2009 в 17:57.
pavel42 вне форума Ответить с цитированием
Старый 23.04.2009, 17:57   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
просто черный экран появляеться при запуске))
А числа за вас кто должен вводить?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 23.04.2009, 18:00   #10
pavel42
Пользователь
 
Регистрация: 06.04.2009
Сообщений: 95
По умолчанию

я уже понял, спс ))
pavel42 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться Var17 Общие вопросы Delphi 6 27.03.2010 01:21
Не могу понять в чем ошибка (вроде школьная математика) Алён@ Общие вопросы Delphi 4 10.03.2009 20:25
Помогите разобраться в чем ошибка, pasha_1 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 28.10.2008 12:14
Не могу понять в чем проблема (код) diznt Помощь студентам 2 03.08.2008 10:20