|
Вопрос # 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™ (статус: Доктор наук), 2 июня 2009, 14:51 [#4]:
1. В задании не сказано, что надо делать НЕ через массив.
2. Не понятно про операторы цикла. В моём примере присутствует оператор for. А надо, чтобы присутствовали все 3 оператора цикла (For, Repeat и While)?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Николай Иванович (статус: Посетитель), 2 июня 2009, 14:54 [#5]:
в данном случае надо сделать через for, без массивов...
|
|
Вадим К (статус: Академик), 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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 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™ (статус: Доктор наук), 2 июня 2009, 15:22 [#15]:
Ты как их вводишь? Надо 1 [пробел] -1 [enter]
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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™ (статус: Доктор наук), 2 июня 2009, 15:44 [#20]:
Цитата:
Да код то я понимаю, но эт тоже не вариант с процедурой...
Я смотрю, тебе не угодишь!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|