Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 878

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Помогите пожалуйста написать программу.

1. С клавиатуры вводятся последовательно 10 пар целых чисел x и y. Выведите на экран только те пары, имеющие противоположные знаки.

Николай Иванович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Николай Иванович (статус: Посетитель)
Вопрос отправлен: 2 июня 2009, 13:58
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

program p2878;
 
const
  N = 10;
 
type
  TPair = record
    X, Y: Integer;
  end;
 
  TPairArray = array[0..N - 1] of TPair;
 
var
  PA: TPairArray;
  Index: Integer;
 
begin
  WriteLn(#13#10'--- Input a pairs ---');
  for Index:= 0 to N - 1 do
    begin
      Write('  type an X and Y of pair ', (Index + 1): 2,': ');
      ReadLn(PA[Index].X, PA[Index].Y);
    end;
 
  WriteLn('--- Pairs with different signs ---');
  for Index:= 0 to N - 1 do
    if PA[Index].X * PA[Index].Y < 0
      then WriteLn('  Pair ', (Index + 1): 2,': ', PA[Index].X, ', ', PA[Index].Y);
 
  Write(#13#10'    Press "Enter" to exit...');
  ReadLn;
end.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 2 июня 2009, 14:31


Мини-форум вопроса

Всего сообщений: 23; последнее сообщение — 2 июня 2009, 15:56; участников в обсуждении: 4.

Страницы: [1] [2] [Следующая »]

Пупкин В В

Пупкин В В (статус: 2-ой класс), 2 июня 2009, 14:11 [#1]:

а в чем сложность, на чем остановились?
или вы просто хотите чтоб за вас написали?
алгоритм прост:
вводите х и у
если х меньше нуля при этом у больше или наоборот то запоминаем эти числа в массив
выводим массив
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 14:33 [#2]:

это не через массив надо сделать...

Задание к работе:
1. Составить математическую модель решения задач Задания 1. написать программу на языке Паскаль (с использованием операторов For, Repeat и While).
Пупкин В В

Пупкин В В (статус: 2-ой класс), 2 июня 2009, 14:42 [#3]:

PA[Index].X * PA[Index].Y < 0 точно более правильно =)
min@y™

min@y™ (статус: Доктор наук), 2 июня 2009, 14:51 [#4]:

1. В задании не сказано, что надо делать НЕ через массив.
2. Не понятно про операторы цикла. В моём примере присутствует оператор for. А надо, чтобы присутствовали все 3 оператора цикла (For, Repeat и While)?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 14:54 [#5]:

в данном случае надо сделать через for, без массивов...
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 14:58 [#6]:

и в pascal 7.0
Вадим К

Вадим К (статус: Академик), 2 июня 2009, 15:05 [#7]:

м, что то в таком стиле
begin
  for i := 1 to 10 do begin
    writeln('pervoe='); readln(x1);
    writeln('vtoroe='); readln(x2);
    if (x1*x2 < 0) then
      writeln (x1, ' ', x2);
  end;
end.
или вместо массивов надо связанные списки использовать?
Галочка "подтверждения прочтения" - вселенское зло.
min@y™

min@y™ (статус: Доктор наук), 2 июня 2009, 15:12 [#8]:

Вот вариант без массива с одним циклом:
program p2878new;
 
const
  N = 10;
 
var
  Index, X, Y: Integer;
 
begin
  WriteLn(#13#10'--- Input a pairs ---');
  for Index:= 0 to N - 1 do
    begin
      Write('  type an X and Y of pair ', (Index + 1): 2,': ');
      ReadLn(X, Y);
 
      if X * Y < 0
        then WriteLn('    >> This pair has a different signs: ', X, ', ', Y);
    end;
 
  Write(#13#10'    Press "Enter" to exit...');
  ReadLn;
end.

Цитата:

и в pascal 7.0

А что, код в ответе не компилится в Pascal 7.0? Не может такого быть!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 2 июня 2009, 15:13 [#9]:

Цитата:

или вместо массивов надо связанные списки использовать?


Вово, я тоже подумал, уж не в дин. памяти ли хранить введённые данные?!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 15:14 [#10]:

Я делал такой же код программы, тут просто вводятся 10 пар и ничего не выводится =\
Вадим К

Вадим К (статус: Академик), 2 июня 2009, 15:15 [#11]:

ну что бы что то вывелось, надо ещё правильно ввести. А если просто одни положительные числа вводить, то конечно ничего не выведет.
Галочка "подтверждения прочтения" - вселенское зло.
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 15:21 [#12]:

ну эт понятно... я и ввожу пару -1 и 1 и не выводит....
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 15:21 [#13]:

ну эт понятно... я и ввожу пару -1 и 1 и не выводит....
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 15:22 [#14]:

а ну хотя выводит ... ток не так надо я так и сам сделал, надо чтоб сначало ввести 10 пар, а потом вывелись они, а не так чтоб вводишь и они сразу показывались ...
min@y™

min@y™ (статус: Доктор наук), 2 июня 2009, 15:22 [#15]:

Ты как их вводишь? Надо 1 [пробел] -1 [enter]
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 2 июня 2009, 15:25 [#16]:

Цитата:

надо чтоб сначало ввести 10 пар, а потом вывелись они, а не так чтоб вводишь и они сразу показывались ...


Так их где-то надо хранить! Если нельзя массивы использовать, то тут есть ещё мегаварианты:
1. Дин. память.
2. Куча переменных X1, X2,..., X10, Y1, Y2,...Y10 (тогда куда пихать цикл?).
3. Писать введённое в файл, затем читать оттуда и сравнивать.

Вращайте барабан! (© Якубович)
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 15:32 [#17]:

хм..ясно, а точно вариантов больше нет чтобы при вводе 10 пар они выводились потом, только при использовании For, Repeat и While
Вадим К

Вадим К (статус: Академик), 2 июня 2009, 15:36 [#18]:

можно ещё рекурсивный ввод замутить... и массивов не будет... и вводить можно будет не 10 элементов, а сколько стека хватит.
есть правда один недостаток - выводиться будут в обратном направлении. правда думаю не всякий преподаватель сходу юмор кода поймет. общий вид кода
procedure vvod(n:integer);
var x,y:integer;
begin
  if n <= 0 then exit;
  Write('  vvedi X i Y ');
  ReadLn(X, Y);
  vvod(n-1);
  if (X*Y) < 0 then 
    writeln(x, ' ',y, '  coool');
end;
 
begin
  vvod(10);
end.
Но это для эстетов. Преподавателю показывать без понимания кода нельзя!
Галочка "подтверждения прочтения" - вселенское зло.
Николай Иванович

Николай Иванович (статус: Посетитель), 2 июня 2009, 15:40 [#19]:

Да код то я понимаю, но эт тоже не вариант с процедурой...
min@y™

min@y™ (статус: Доктор наук), 2 июня 2009, 15:44 [#20]:

Цитата:

Да код то я понимаю, но эт тоже не вариант с процедурой...

Я смотрю, тебе не угодишь!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 16:42
Выполнено за 0.04 сек.