Zla9Sterva
|
stranger
|
|
|
|
Рег.: 12.12.2010
|
Сообщений: 1
|
|
Рейтинг: -31
|
|
HELP !!!!! HELP
12.12.2010 16:44
|
|
|
Помогите пл3 написать лабу в делфи!
Задана последовательность X = (x1, x2, :, x10). Сформировать из нее одномерный массив Y, состоящий только из целочисленных элементов, т.е. дробная часть которых равна нулю, массива Х. Если таковых не окажется, вывести фразу 'Целочисленных элементов нет'. Полученный массив напечатать в столбик. X = {0.1, -4, 72, 23.1, 0.45, 3.8, -2.94, 3, 1.1, 12}.
Если можно то пл3 напишите в ответе готовую структуру, спасибо
Перенесено модератором muse из раздела Hard&Soft
Редактировал muse (12.12.2010 23:28)
|
|
Sigma
|
Дикий Кот
|
|
|
|
Рег.: 24.11.2005
|
Сообщений: 22967
|
Из: уже здесь
|
Рейтинг: 6811
|
|
|
В ответ на:
Помогите пл3 написать лабу в делфи!
в мое время этот язык назывался паскаль
|
|
|
Krasin
|
|
|
|
|
Рег.: 23.06.2004
|
Сообщений: 7039
|
Из: Калифорния
|
Рейтинг: 3386
|
|
|
В ответ на:
Полученный массив напечатать в столбик. X = {0.1, -4, 72, 23.1, 0.45, 3.8, -2.94, 3, 1.1, 12}. Если можно то пл3 напишите в ответе готовую структуру, спасибо
code: Y={
1
12
}
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7272
|
|
Рейтинг: 8203
|
|
|
{$APPTYPE Console}
uses
SysUtils;
var
x:array[1..10] of double;
y:array[1..10] of integer;
n,i:integer;
t:double;
begin
Writeln('Введите 10 чисел:');
for i := 1 to 10 do begin
Readln(t);
x[i] := t;
end;
n := 0;
for i := 1 to 10 do begin
if (x[i]-round(x[i]) = 0) then begin
inc(n);
y[n] := round(x[i]);
end;
end;
if n = 0 then begin
Writeln('Целочисленных элементов нет')
end else begin
for i := 1 to n do begin
Writeln(y[i]);
end;
end;
end.
Редактировал dtbeaver (12.12.2010 23:55)
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
|
В ответ на:
x:array[1..10] of double if (x[i]-round(x[i]) = 0)
FAIL
|
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7272
|
|
Рейтинг: 8203
|
|
Re: HELP !!!!! HELP
[re: abv]
12.12.2010 23:42
|
|
|
В ответ на:
FAIL
для отрицательных что ли?
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
|
неа. попробуй еще раз 
|
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7272
|
|
Рейтинг: 8203
|
|
Re: HELP !!!!! HELP
[re: abv]
12.12.2010 23:44
|
|
|
у меня конпелятора нету, я проверить не могу. скажи так в чем косяк.
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
|
не. не. она скомпилится. и даже будет работать правильно. почти всегда
|
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7272
|
|
Рейтинг: 8203
|
|
Re: HELP !!!!! HELP
[re: abv]
12.12.2010 23:46
|
|
|
на маш. эпсилон намекаешь?
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7272
|
|
Рейтинг: 8203
|
|
Re: HELP !!!!! HELP
[re: abv]
12.12.2010 23:50
|
|
|
мне кажется, нельзя с клавиатуры ввести такое double x, что double x не целое и при этом x-round(x) = 0 вернее можно, но оно станет целым сразу после преобразования из строки в число и записи переменную t. то есть такое число невозможно будет отличить от целого с помощью типа double
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
|
В ответ на:
мне кажется, нельзя с клавиатуры ввести такое double x...
не вынуждай меня ставить компилятор....
|
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7272
|
|
Рейтинг: 8203
|
|
Re: HELP !!!!! HELP
[re: abv]
13.12.2010 00:09
|
|
|
{$APPTYPE Console}
uses
SysUtils;
var
x:array[1..10] of double;
y:array[1..10] of integer;
n,i:integer;
t:double;
begin
Writeln('Введите 10 чисел:');
for i := 1 to 10 do begin
Readln(t);
x[i] := t;
end;
n := 0;
for i := 1 to 10 do begin
if (x[i]-round(x[i]) = 0) then begin
inc(n);
y[n] := round(x[i]);
end;
end;
if n = 0 then begin
Writeln('Целочисленных элементов нет')
end else begin
Writeln('Целые:');
for i := 1 to n do begin
Writeln(y[i]);
end;
Writeln('Исходный массив:');
for i := 1 to 10 do begin
Writeln(x[i]:0:40);
end;
end;
end.
beaver@yacht ~ $ ./proga
Введите 10 чисел:
1
2
3
4
5
6
7
8
9
9.000000000000001
Целые:
1
2
3
4
5
6
7
8
9
Исходный массив:
1.000000000000000
2.000000000000000
3.000000000000000
4.000000000000000
5.000000000000000
6.000000000000000
7.000000000000000
8.000000000000000
9.000000000000000
9.000000000000000
beaver@yacht ~ $ ./proga
Введите 10 чисел:
1
2
3
4
5
6
7
8
9
9.0000000000000001
Целые:
1
2
3
4
5
6
7
8
9
9
Исходный массив:
1.000000000000000
2.000000000000000
3.000000000000000
4.000000000000000
5.000000000000000
6.000000000000000
7.000000000000000
8.000000000000000
9.000000000000000
9.000000000000000
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
Re: HELP !!!!! HELP
[re: abv]
13.12.2010 00:10
|
|
|
В ответ на:
не вынуждай меня ставить компилятор....
ты меня разозлил:
var x:array[1..10] of double; y:array[1..10] of integer; n,i:integer; t:double; begin Writeln('Введите 10 чисел:'); for i := 1 to 10 do begin Readln(t); if (t-round(t) = 0) then Writeln('ok') else Writeln('ne ok!'); end; Readln(t); end.
1.9999999999999999 ok! - в смысле целое, а это не так
|
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7272
|
|
Рейтинг: 8203
|
|
Re: HELP !!!!! HELP
[re: abv]
13.12.2010 00:12
|
|
|
а ты это свое 1.9999999999999999 просто прочитай, а потом выведи на экран и посмотри. P.S. по хорошему надо прочитать, а потом под дебагером посмотреть содержимое ячейки, потому что при выводе при преобразовании в строку тоже добавляются округления, видно в моем примере выше для 9.000000000000001
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
|
Writeln(x[i]:0:40);
2.000..... выводит. а ты к чему это спросил?
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
|
В ответ на:
P.S. по хорошему надо прочитать, а потом под дебагером посмотреть содержимое ячейки
ага. причем не через вотчес, а в бинарном виде
P.S эх, паскаль. школьные олимпиады, асм-контесты... ностальгия
|
|
|
dtbeaver
|
латентный вантузоид
|
|
|
|
Рег.: 04.01.2005
|
Сообщений: 7272
|
|
Рейтинг: 8203
|
|
Re: HELP !!!!! HELP
[re: abv]
13.12.2010 00:19
|
|
|
В ответ на:
а ты к чему это спросил?
к тому что глюк с машинным эпсилон возникает еще в функциях ввода и с этим ничего поделать нельзя. и x-round(x) тут не причем
|
|
|
abv
|
|
|
|
|
Рег.: 21.09.2007
|
Сообщений: 6924
|
|
Рейтинг: 6747
|
|
|
ок. но это все равно тебя не сильно оправдывает. настоящие программисты не должны так писать
еще: число 9999999999999.999 распечатывается как целое, но fract(t) != 0
|
|
|