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

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

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

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

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
Ты как моя Иринка.... "Поможешь мне помыть посуду?". Это подразумевает, что я ее помыть и должен.

Если тебе самому логика ясна - реализовывай. Переложить на код ума большого не надо, надо только голову включить. ИМХО, выполняй домашку сам :)
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Khvosticov Sergey
Сообщения: 203
Зарегистрирован: 31.12.2009
Вот исходник, но как сделать что бы самому задавать константу, тут указано 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
Сообщения: 329
Зарегистрирован: 17.05.2010
Константа - она на то и константа, что считается неизменной. Тебе же нужна не константа. Тебе нужно создать еще одну переменную, с которую и нужно запомнить введенное значение.
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Khvosticov Sergey
Сообщения: 203
Зарегистрирован: 31.12.2009
Мне поможет кто нибудь до понедельника?
🇷🇺🇷🇺🇷🇺

Аватара пользователя
Centaurus
Сообщения: 60
Зарегистрирован: 13.05.2010
Пример, что называется, "по учебнику"

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

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
Сообщения: 203
Зарегистрирован: 31.12.2009
как были умники так и остались, спасибо cyberforum.ru лучший.
🇷🇺🇷🇺🇷🇺

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

И предупреждение тебе за рекламу ресурса.
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

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

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
2Centaurus
Тут же надо было сделать все самому....

Вообще я сомневаюсь, что такого рода задания должны юзать операции с выделением памяти... Я бы создал большой массив, скажем из 100 значений, и при вводе ругался бы, что больше ста нельзя вводить. О каком выделении памяти мы говорим, если тут нет простейшей обработки ошибок :)
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

Khvosticov Sergey
Сообщения: 203
Зарегистрирован: 31.12.2009
Если кому-то понадобится то...

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

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
Сообщения: 60
Зарегистрирован: 13.05.2010
Просто убил наповал!!! О.о
Во-первых, где блок описания массива?
например:

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

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

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

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

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

Аватара пользователя
AgentSIB
Сообщения: 329
Зарегистрирован: 17.05.2010
2Centaurus

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

2Khvosticov Sergey

Это никому не пригодиться. Мало того, как программист, отмечу, что это читерство :) Задача не на столько сложная, чтобы спрашивать совета :)
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"

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

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

Ответить