Помогите с задачей на Pascal

Khvosticov Sergey
Нужна программа которая в массиве будет делать
"Вводим числа на промежутке"
t:array [-100+100] to real; - или как-то так уж не помню думаю принцип понятен о чем я.

Вводим допустим промежуток до 5
Будет поочередно вводить 5 записей
а-1
а-2
а- (-3)
а-4
а- (5)

Теперь необходимо вывести количество положительных и отрицательных чисел, думаю примерно смысл задачи понятен
Вводим кол-во записей, вводим записи (положительные/отрицательные) и выводим сколько каких записей- как-то так думаю смысл понятен, помогите пожалуйста.
Вернуться к началу

AgentSIB
Ты как моя Иринка.... "Поможешь мне помыть посуду?". Это подразумевает, что я ее помыть и должен.

Если тебе самому логика ясна - реализовывай. Переложить на код ума большого не надо, надо только голову включить. ИМХО, выполняй домашку сам :)
Вернуться к началу

Khvosticov Sergey
Вот исходник, но как сделать что бы самому задавать константу, тут указано 20, не пойму как можно указывать самому константу, допустим сначала константу, т.е кол-во записей для проверки, а потом уж числа. :kr:

Код: Выделить всё

program otrishatelnyx_i_pologytelnyx_chisel_v_massive;
uses crt;
const n=20;
var a:array[1..n] of integer; 
      i,k,p:integer;
 begin
  ClrScr;
  Writeln('Введите массив');
   for i:=1 to n do
   begin
    Write('a[',i,']: ');
    Readln(a[i]);
   end;
  for i:=1 to n do
   begin
   if a[i]>0 then
    k:=k+1;
   if a[i]<0 then
    p:=p+1;
   end;
 Writeln('Колличество положительных ',k);
 Writeln('Колличество отрицательных ',p);
Readln;
end.
Вернуться к началу

AgentSIB
Константа - она на то и константа, что считается неизменной. Тебе же нужна не константа. Тебе нужно создать еще одну переменную, с которую и нужно запомнить введенное значение.
Вернуться к началу

Khvosticov Sergey
Мне поможет кто нибудь до понедельника?
Вернуться к началу

Centaurus
Пример, что называется, "по учебнику"

Код: Выделить всё

Program DinMass;
type
  mass = array[1..150] of real;
var
  x: ^mass;
  i, n: integer;
begin
  writeln('введите размер массива');
  readln(n);
  getmem(x, n*sizeof(real)); //выделяем память под n эл-тов массива

  for i := 1 to n do
    begin //вводим значения эл-тов
      write('x(', i,') = ');
      readln(x^[i]);
    end;
{

производим какие-то действия над массивом.
(подсчтет/вывод кол-ва положительных/отрицательных значений)

}
  freemem(x, n*sizeof(real)); //освобождаем память
end.
Вернуться к началу

Khvosticov Sergey
как были умники так и остались, спасибо cyberforum.ru лучший.
Вернуться к началу

AgentSIB
Хвостиков, как был балбесом, так и остался! Я тебе помог, сказав заменить константу на переменную. Если бы ты это сделал, все бы работало. Однако ты же голову включать не хочешь. Данный форум существует не для того, чтобы делать чужие домашние задания, а для того, чтобы наставить на путь истинный в коде. Либо сделать это платно.

И предупреждение тебе за рекламу ресурса.
Вернуться к началу

Centaurus
мда.. мне вот тоже несколько не понятна реакция на помощь.. Агент объяснил что такое константа, я привел пример создания динамического массива. Оставалось только вставить кусок кода с подсчетом положительных и отрицательных элементов.
Вернуться к началу

AgentSIB
2Centaurus
Тут же надо было сделать все самому....

Вообще я сомневаюсь, что такого рода задания должны юзать операции с выделением памяти... Я бы создал большой массив, скажем из 100 значений, и при вводе ругался бы, что больше ста нельзя вводить. О каком выделении памяти мы говорим, если тут нет простейшей обработки ошибок :)
Вернуться к началу

Khvosticov Sergey
Если кому-то понадобится то...

Код: Выделить всё

program otrishatelnyx_i_pologytelnyx_chisel_v_massive;
uses crt;
var n, i,k,p,a:integer;
begin
  ClrScr;
  Writeln('Введите количество чисел');
  Readln(n);
  Writeln('Введите числа');
   for i:=1 to n do
   begin
    Write('a[',i,']: ');
    Readln(a);
    if a>0 then
      inc(k);
    if a<0 then
      inc(p);
   end;

Writeln('Колличество положительных ',k);
Writeln('Колличество отрицательных ',p);
Readln;
end.
Вернуться к началу

Centaurus
Просто убил наповал!!! О.о
Во-первых, где блок описания массива?
например:

Код: Выделить всё

..
type
  mass = array[1..n] of real;
..
или:

Код: Выделить всё

..
var
  mass: array[1..n] of real;
..
В приведенном тобой примере массива вообще нет! Есть только 5 переменных.

Во-вторых, в цикле 1..n ты переприсваиваешь одной единственной переменной а разные значения, одновременно с этим ты увеличиваешь счетчики k и p в зависимости от того, является ли введенное число положительным или отрицательным.
Вернуться к началу

AgentSIB
2Centaurus

Вообще если следовать вводу выводу, то задача решена корректно. Без массива вполне можно обойтись обрабатывая данные при выходе. Была такая задумка, но слово массив сбило не только тебя, но и меня тоже :)

2Khvosticov Sergey

Это никому не пригодиться. Мало того, как программист, отмечу, что это читерство :) Задача не на столько сложная, чтобы спрашивать совета :)
Вернуться к началу

Centaurus
2AgentSIB
То, что результат будет верным я не спорю. Ввели количество итераций, в цикле вводим значения, проверяем +/-, увеличиваем счетчик и т.д., выходим из цикла, выводим кол-во + и -. Все верно. Но! Задание-то именно по массивам, если верить первому посту.
А это прямо таки какой-то "обманный маневр". Если код не показывать преподу, может прокатить :)
Вернуться к началу

Khvosticov Sergey
Просто паскаль начался сейчас на информатике в техникуме, не когда с паскалем не работал, немного схож с php т.е некоторые переменные :) поэтому немного облегчает работу, но паскаль легче ... :)
Вернуться к началу