Просмотр полной версии : Покажите что тут нетак и чтоо выводить должно по вашему?
float x,y,rezult;
for(int j=1; j<500000; j++){
y =(float)j;
for(int i=1; i<500000; i++){
x=(float)i;
rezult = x - (x/y)*y;
if (rezult != 0){cout<<rezult;};
};
};
Что должен этот код выводить?=\
и что выводить должен этот :
float x,y,rezult;
for(int j=1; j<500000; j++){
y =(float)j;
for(int i=1; i<500000; i++){
x=(float)i;
rezult = x - (x/y)*y;
cout<<rezult;
};
};
И правильноли там преобразование сдделал ато все забыл за лето уже : y =(float)j?
В обшем должно же ноль всегда ввыводить только?)
nc.STRIEM
16.07.2008, 17:47
>>>В обшем должно же ноль всегда ввыводить только?)
нет. ты соскобками разберись
так наглядней
float x,y,rezult;
for(int j=1; j<500000; j++)
{
y =j;
for(int i=1; i<500000; i++)
{
x=i;
rezult = x - (x/y)*y;
if (rezult != 0)
cout<<rezult;
}
}
а выводит он много цифр.
p/s/ преобразование типов в данном случае не надо т.к. переменные и так флоат. Точказапятая после фигурных скобок не обязательна, и есле один оператор то фигурные скобки тож не обязательны
ога, много много "типо" нулей, код то правильный (за исключением точек с запятой невпопад) ... размерность float имеет свою конечную размерность и при делении непопавшии в неё разряды после запятой обрезаются, что даёт некоторую флуктуацию
так что несовсем (x/y)*y = x
както так
if (rezult != 0)
выводиться как раз будут НЕ нули.
и выводиться все эти цифры будут "сплошняком".
добавь что-ли разделитель какой-нибудь для наглядности.
2VAran
"ТИПО" нули
код скомпилируй сначала и вывод сделай такой чтобы поле дробной части было символов в 20
printf("%.20f", rezult);
и сразу видно будет, что это числа порядка 1 * 10^(-15) ... а всё изза конечной размерности типа float
поэтому x - (x/y)*y иногда и != 0
rezult = x - (x/y)*y;
Математически в этом выражении будет присваиваться нуль, но из-за особенностей реализации чисел с плавающей точкой в компьютерах нуль там никогда не будет. Число 26.57, к примеру, будет представлено чем-то наподобие 26.5699999999999
nc.STRIEM
17.07.2008, 10:47
rezult = x - (x/y)*y;
Математически в этом выражении будет присваиваться нуль, но из-за особенностей реализации чисел с плавающей точкой в компьютерах нуль там никогда не будет. Число 26.57, к примеру, будет представлено чем-то наподобие 26.5699999999999
че за бред ты отписал?
Тут ноль не будет присваиваться! посмотри код и поймеш что x != y поэтому нуля та мне будет
2nc.STRIEM
сокращать дроби не умеем?
(x/y)*y = x
или ты просто скобки не заметил? ^______^
nc.STRIEM, ты посты внимательно читаешь или как? Я сказал - МАТЕМАТИЧЕСКИ. Возьми бумажку и ручку, напиши эту формулу, подставь вместо x и y любые числа. Если у тебя остались хоть элементарные познания арифметики, на бумаге у тебя будет нуль. Сам бред несешь. Учи математику.
2Exile1985
ненадо ТС путать
если не знаешь, так хотя бы скомпиль код и посмотри, что получится
а чтобы осмыслить то, что получилось прочти то что здесь постили я и krypt3r
ЗЫ читайте, прежде чем ответить, всю тему! и подумайте прежде чем отвечать, а то человека же путаете млин
Exile1985
17.07.2008, 12:19
2Exile1985
ненадо ТС путать
если не знаешь, так хотя бы скомпиль код и посмотри, что получится
а чтобы осмыслить то, что получилось прочти то что здесь постили я и krypt3r
ЗЫ читайте, прежде чем ответить, всю тему! и подумайте прежде чем отвечать, а то человека же путаете млин
спокойствие...только спокойствие
зы.: а написал то как....ух xD
nc.STRIEM
17.07.2008, 12:19
шот я с математикой проебал немного....
2Exile1985
утро ... работа ... юзвери ... раздражение
^_________^
nc.STRIEM поразил =) без обид ...
nc.STRIEM
17.07.2008, 13:52
гы)) бывает... суровое утро
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot