IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на массивы, Помогите пожалста
Zoom
сообщение 22.03.2008 16:03
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Виталий

Репутация: -  0  +


Дан массив из 5 вещественных чисел в нём надо найти элемент в котором наибольшее кол-во подряд идущих нулей нулей.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 22.03.2008 17:06
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Не вижу проблемы.
Как вариант:
Взять дробную часть (Frac).
Перевести ее в строку (str).
А уж нахождение "наибольшее кол-во подряд" решалось много-много раз.
Поиск Вам поможет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Zoom
сообщение 22.03.2008 17:14
Сообщение #3





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Виталий

Репутация: -  0  +


Пользоваться строками запрещено. Пытаюсь перевести число в целое путём умножения его на 10 в цикле а потом с помощью div и mod находить каждый символ в числе. Но проблема почему то после выполнения числа получаются аж в 12 степени
Код
Program asd;
uses crt;
var i,k,y:longint;
s,s1:string;
a:array[1..4] of real;
begin
clrscr;
writeln('Vvedite 4 chisla');

For i:=1 to 4 do begin
readln(a[i]);

while frac(a[i])<>0 do
a[i]:=a[i]*10;
end;

For I:=1 to 4 do
{y:=round(a[i]);}
writeln(a[i]);
end.


Сообщение отредактировано: Zoom - 22.03.2008 17:19
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 22.03.2008 17:22
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Целую часть - отдельно. Дробную - отдельно.
Дробную - умножением на 10 и переводом в целое. Далее выделяешь остатки от деления нацело (mod) и проверка.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Zoom
сообщение 22.03.2008 17:41
Сообщение #5





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Виталий

Репутация: -  0  +


А не подскажите ли условие при котором проверяется достигла ли дробная часть целого числа, а то я понял что frac не подходит в цикле с предусловием?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 22.03.2008 19:06
Сообщение #6


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Опять условие предполагает уточнение, которое какжется очевидным всем кроме меня?
Если речь идет о числе, а не о его текстовой записи, то нули могут быть только одного вида - двоичные. Т.е. число следует проверять поразрядно на количество подряд идущих разрядов, установленных в 0.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 22.03.2008 19:19
Сообщение #7


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


Цитата
А не подскажите ли условие при котором проверяется достигла ли дробная часть целого числа, а то я понял что frac не подходит в цикле с предусловием?
Т.е. если было 0,123 то тебе надо чтоб стало 123? тогда
while frac(x)>0 do x:=x*10
Так, на этом же примере цикл выполнился больше раз чем нужно, поэтому можно записать
while frac(x)>0.00000001 do x:=x*10


Сообщение отредактировано: Client - 22.03.2008 19:26
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Zoom
сообщение 22.03.2008 19:25
Сообщение #8





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Виталий

Репутация: -  0  +


Можь кто скажет почему у меня после умножения дробной части на 10 , в ответе выводится число со степенью 12(мне стока ноликов не надо)
Код
Program asd;
uses crt;
var i,k:longint;
x,y,z:real;
s:string;
a:array[1..4] of real;
begin
clrscr;
writeln('Vvedite 4 chisla');

For i:=1 to 4 do begin
readln(a[i]);
y:=frac(a[i]);
x:=int(a[i]);
While frac(y)>0 do
begin
y:=y*10;
end;
writeln(x,' ',y);
end;
end.


Сообщение отредактировано: Zoom - 22.03.2008 19:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 6:40
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"