Страница 4 из 9

Re: Помощь начинающему

СообщениеДобавлено: 13.11.2012 18:10:49
vada
Ошибка, рядовой ! :D

Капитан :P

Re: Помощь начинающему

СообщениеДобавлено: 14.11.2012 05:40:09
Vadim
nikolay61 писал(а): как написать прогарму ДО задачи

Никак! "прогарму" пишут только ПОСЛЕ задачи... :D

Re: Помощь начинающему

СообщениеДобавлено: 14.11.2012 08:03:07
bormant
rudie писал(а):Помогите пожалуйста составить программу, чтобы числа выводились в виде такой таблицы, если не трудно с объяснениями что к чему:
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0

Код: Выделить всё
var
  i, j: integer;
begin
  for i := 0 to 4 do begin
    for j := i downto 0 do write(j, ' ');
    writeln;
  end;
end.

Re: Помощь начинающему

СообщениеДобавлено: 14.11.2012 13:25:09
Vadim
vada писал(а):Капитан

Фрегаттен-капитэн? :)

Re: Помощь начинающему

СообщениеДобавлено: 27.11.2012 14:01:46
nikolay61
Доброго! Что неправильно?


Код: Выделить всё
uses crt;
var x,y:integer;
s,r,d:longint;
h:real;
z:char;

BEGIN
writeln('x,y');
read(x,y);
writeln('z');
read(z);
case z of
'+': begin s:=x+y; writeln(s); end;
'-': begin r:=x-y; writeln(r); end;
'*': begin d:=x*y; writeln(d); end;
'/': begin h:=x/y; writeln(h:2:3); end;
else writeln('Помилка');
end;
readln;
readln;

END.

Re: Помощь начинающему

СообщениеДобавлено: 27.11.2012 14:14:56
PapaNT
Код: Выделить всё
uses crt;
var x,y:integer;
s,r,d:longint;
h:real;
z:char;

BEGIN
writeln('x,y');
readLN(x,y); // Лучше с LN - более наглядно
writeln('z');
read(z);
case z of
'+': begin s:=x+y; writeln(s);//end;
'-': begin r:=x-y; writeln(r); //end;
'*': begin d:=x*y; writeln(d); //end;
'/': begin h:=x/y; writeln(h:2:3); //end;
else writeln('Помилка');
end; // на весь case надо только один end
readln;
// readln; - зачем второй readln в конце?

END.

Re: Помощь начинающему

СообщениеДобавлено: 27.11.2012 16:13:20
bormant
Код: Выделить всё
var
  x, y: real;
  z: char;
begin
  write('Введите через пробелы два числа и знак операции: '); readln(x, y, z);
  case z of
    '+': writeln(x+y);
    '-': writeln(x-y);
    '*': writeln(x*y);
    '/': writeln(x/y);
    else writeln('Ошибочная операция.');
  end;
  readln;
end.

PapaNT писал(а):на весь case надо только один end
те "end"-ы не от "case"-а, а от составных операторов "begin end" в каждом из вариантов.

Re: Помощь начинающему

СообщениеДобавлено: 27.11.2012 16:30:31
PapaNT
пардон - не заметил...

Re: Помощь начинающему

СообщениеДобавлено: 27.11.2012 19:28:56
v-t-l
перед else ";" не ставится.

Re: Помощь начинающему

СообщениеДобавлено: 27.11.2012 21:17:21
nikolay61
Vadim писал(а):Никак! "прогарму" пишут только ПОСЛЕ задачи...


Принято. :mrgreen:

Добавлено спустя 2 минуты 13 секунд:
bormant писал(а):те "end"-ы не от "case"-а, а от составных операторов "begin end" в каждом из вариантов.

Есть, работает. Всем ОК!

Re: Помощь начинающему

СообщениеДобавлено: 27.11.2012 22:27:23
bormant
v-t-l писал(а):перед else ";" не ставится.
... в операторе if ... then ... else. Вот только не вижу тут я этого оператора... А вы?

Re: Помощь начинающему

СообщениеДобавлено: 27.11.2012 22:37:37
nikolay61
PapaNT писал(а):PapaNT

PapaNT писал(а):на весь case надо только один end

Изображение

Re: Помощь начинающему

СообщениеДобавлено: 30.11.2012 19:48:14
nikolay61
PapaNT писал(а):
Код: Выделить всё
uses crt;
var x,y:integer;
s,r,d:longint;
h:real;
z:char;

BEGIN
writeln('x,y');
readLN(x,y); // Лучше с LN - более наглядно
writeln('z');
read(z);
case z of
'+': begin s:=x+y; writeln(s);//end;
'-': begin r:=x-y; writeln(r); //end;
'*': begin d:=x*y; writeln(d); //end;
'/': begin h:=x/y; writeln(h:2:3); //end;
else writeln('Помилка');
end; // на весь case надо только один end
readln;
// readln; - зачем второй readln в конце?

END.

А ведь работает и так. Почему первый раз не заработало не пойму. Может что-то с FPC. Я переустановил, попробовал и заработал и в этой версии сборки.
program OPERACII;

uses crt;
var x,y:integer;
s,d,r:longint;
h:real;
z:char;
i:byte;
label koka;
BEGIN
clrscr;
  koka:
writeln('Введите х и у'); readln(x,y);
writeln('введите символ (-,+,*,/)'); readln(z);
case z of
'+': begin s:=x+y; writeln(s); end;
'-': begin r:=x-y; writeln(r); end;
'*': begin d:=x*y ;writeln(d); end;
'/': begin h:=x/y; writeln(h:3:3); end;
else writeln('Не тот знак ввели');
end;
writeln('Если дальше продолжить, жми 1, в противном случає - любую цифру'); readln(i);
if i=1 then GOTO koka else writeln('К О Н Е Ц');
readln;
END.


Добавлено спустя 3 минуты 18 секунд:
nikolay61 писал(а):КОД: ВЫДЕЛИТЬ ВСЁ
uses crt;
var x,y:integer;
s,r,d:longint;
h:real;
z:char;

BEGIN
writeln('x,y');
readLN(x,y); // Лучше с LN - более наглядно
writeln('z');
read(z);
case z of
'+': begin s:=x+y; writeln(s);//end;
'-': begin r:=x-y; writeln(r); //end;
'*': begin d:=x*y; writeln(d); //end;
'/': begin h:=x/y; writeln(h:2:3); //end;
else writeln('Помилка');
end; // на весь case надо только один end
readln;
// readln; - зачем второй readln в конце?

END.


Братцы, а работает и и этой наборкой
program Temperatur;

uses crt;
var x,y:integer;
s,d,r:longint;
h:real;
z:char;
i:byte;
label koka;
BEGIN
clrscr;
koka:
writeln('Введите х та у'); readln(x,y);
writeln('введите символ (-,+,*,/)'); readln(z);
case z of
'+': begin s:=x+y; writeln(s); end;
'-': begin r:=x-y; writeln(r); end;
'*': begin d:=x*y ;writeln(d); end;
'/': begin h:=x/y; writeln(h:3:3); end;
else writeln('Не тот знак ввели');
end;
writeln('Если дальше продолжить, жми 1, в противном случає - любую цифру'); readln(i);
if i=1 then GOTO koka else writeln('К О Н Е Ц');
readln;
END.

Добавлено спустя 2 часа 33 минуты 27 секунд:
Объясните пожайлуста зачем здесь k:=k+1 если програма и так работает правильно без "k"
program Suma_parnych;

uses crt;
var
c1,c2,c3,{chysla}s,{suma}k:{kilkisty} integer;
sa:{serednye aryfmetychne}real;
i:{mitka}byte;
label mitka;
BEGIN
clrscr;
mitka:
writeln('Введите три числа');
readln(c1,c2,c3);
s:=0; k:=0; sa:=0; {Начальные значения}
if c1 mod 2=0 then begin s:=s+c1; k:=k+1; end;{Парное ли 1 число?}
if c2 mod 2=0 then begin s:=s+c2; k:=k+1; end;
if c3 mod 2=0 then begin s:=s+c3; k:=k+1; end;
sa:=s/3;
writeln('Сума =',s,' ','Середнее значение =',sa:4:4);

writeln('Далее дави - "1", или "0"');
readln(i);
if i=1 then GOTO mitka
else writeln('END');
readln;
END.

Re: Помощь начинающему

СообщениеДобавлено: 30.11.2012 22:39:05
bormant
Полагаю, задание звучало наподобие: ввести три целых числа и найти среднее арифметическое чётных из них. Тогда должно было быть что-то вроде:
Код: Выделить всё
  s:=0; k:=0;
  { считаем сумму и количество чётных чисел среди c1, c2, c3 }
  if c1 mod 2=0 then begin s:=s+c1; k:=k+1; end;
  if c2 mod 2=0 then begin s:=s+c2; k:=k+1; end;
  if c3 mod 2=0 then begin s:=s+c3; k:=k+1; end;
  if k=0 then
    writeln('Среди введённых чисел нет чётных.')
  else
    writeln('Сумма=', s, ', Количество=', k, ', Среднее=', s/k:4:4);


Добавлено спустя 10 минут 27 секунд:
Но логичнее:
Код: Выделить всё
var
  c: array [0..2] of integer;
  i, s, k: integer;
begin
  repeat
    write('Введите три числа (через пробел): ');
    readln(c[0], c[1], c[2]);
    s := 0; k := 0;
    for i := 0 to 2 do
      if c[i] mod 2 = 0 then begin
        s := s + c[i]; k := k + 1;
      end;
      if k = 0 then
        writeln('Среди введённых чисел нет чётных.')
      else
        writeln('Для чётных: Сумма=', s, ', Количество=', k, ', Среднее=', s/k:4:4);
    write('Введите 1 для продолжения или 0 для завершения: ');
    readln(i);
  until i = 0;
  writeln('Завершено, нажмите Enter.');
  readln;
end.

Re: Помощь начинающему

СообщениеДобавлено: 03.12.2012 00:35:21
Leon
Здравствуйте всем.Поморочался тут немало,ничего толкового не получилось.Вот и решил побеспокоить уважаемых наших экспертов.
Значит есть задача.Отдельная программа имет окно с таблицей,в которую вручную с клавиатуры заносятся некоторые значения.Ввожу я,например в ячейку таблицы число 25,нажимаю ВВод и курсор скачет в другую ячейку.Я решил сообразить на Делфи некую свою программку,которая бы заполняла эту таблицу автоматом,занося во внешнюю таблицу числа из своего внутреннего массива (или из предварительно записанного файла).
Первый вариант кода был такой

procedure TForm1.BitBtn2Click(Sender: TObject);//пробуем передать во внешнюю таблицу числа 92 и 15
var
wnd: HWND;
N:byte;
begin
wnd := FindWindow(nil,'Ex_table');//"Ex_table" таково имя внешней таблицы
if wnd <>0 then
begin
wnd:=FindWindowEx(wnd, 0, 'Edit',nil);
SetForegroundWindow(wnd);
Sleep(500);
keybd_event(Ord('9'), 0, 0, 0);//имитация нажатия клавиши 9
keybd_event(Ord('9'), 0, KEYEVENTF_KEYUP, 0);//имитация отпускания клавиши 9
keybd_event(Ord('2'), 0, 0, 0);//имитация нажатия клавиши 2
keybd_event(Ord('2'), 0, KEYEVENTF_KEYUP, 0);//имитация отпускания клавиши 2
keybd_event($0d, 0, 0, 0);//клавиша ENTER
keybd_event($0d, 0, KEYEVENTF_KEYUP, 0);

//для числа "15" код аналогичный
end;
end;

Из этого кина ничего не вышло.Процедура сработала,но внешняя таблица осталась пустой
Тогда попробовал по-другому.

Procedure EmulateKey(VKey: Integer);
Begin
PostMessage(FindWindow(Nil, 'Ex_table'), Wm_KeyDown, VKey, 1);
Sleep(200);
PostMessage(FindWindow(Nil, 'Ex_table'), Wm_KeyUp, VKey, 1);
Sleep(200);
End;

procedure TForm1.BitBtn2Click(Sender: TObject);//пробуем передать во внешнюю таблицу числа 92 и 15
begin
EmulateKey(Ord('9');
EmulateKey(Ord('2');
....
end;

И из этого также...

Не знаю,что можно предпринять еще.Может я что-нить не так написал или дал неверные параметры? Все скатано из Интернета.Писали люди вроде знающие,а толку нет... Эксперты,помогите,плиз. :roll: