![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по си++, знаю что это форум по Делфи...
anonimousC++ © (2007-01-29 09:26:00)Сори что я лезу тут с вопросом по с++, но увы не знаю форумов по с++, а тратить время на регистрацию и поиск форумов, у меня времени нет, оч. срочно нужно решить проблемму.
Вот у меня такая проблемма - вот код, который считает кол-во разрядов в числе.
#include
#include
main()
{
long int a,b,c,d,k,i;
printf("\nvvefite chislo v dvoichnoi = ");
scanf("%d",&a);
b=a;
k=0;
while (b>0)
{
b=b/10;
k=k+1;
}
printf("%d",k);
}
Воодим допустим ему 1234, он выводит 4, все работает, все нормуль. НО! Если я добавляю к этому куску кода поосле printf("%d",k); , еще такое
d=k-1;
b=a;
for (i=0;i=d;i++)
{
b=a-10*(a/10);
a=a/10;
c=b*(pow(2,i));
}
То он мне выводит, что у числа 1234 0 разрядов.... Пошагово прохожу код, воожу ему 1234, он доходит до цикла while (b>0) , и пропускает его! Хотя b=1234>0 , а вот если убрать часть когда, где цикл for, то все работет...Вот сижу и думаю, или я дурак, или еще что то...
Игорь Шевченко (2007-01-29 12:03:00) [1]
> а тратить время на регистрацию и поиск форумов, у меня времени
> нет
Если ты такой занятой, почему такой глупый ?
Elen (2007-01-29 10:54:00) [2]В таком случае баг может быть только в первом Scanf.
Как сказал ViEmscanf("%ld",&a);Ну в общем для лонга...
Elen (2007-01-29 10:51:00) [3]
> ViEm
А-а. Ну да тип у него интовский. Но формула конечно мутная.
ViEm (2007-01-29 10:48:00) [4]
> > это же целые числа
>
> И что?
>
то, что (a/10) - даст целочисленное деление.
а 10*(a/10) даст делящийся на 10 кусок a
а a-10*(a/10) даст остаток от деления a на 10
поэтому тип числа тут очень важен.
но вся эта конструкция просто и однозначно заменяется на b=a%10;
Elen (2007-01-29 10:44:00) [5]
> это же целые числа
И что?
ViEm (2007-01-29 10:39:00) [6]
> Ну вообще-то b=a-10*(a/10) кажись при любом а дает ноль.
> Убери эту формулу. Она как минимум мусорная.
>
это же целые числа :)))
Elen (2007-01-29 10:25:00) [7]
> anonimousC++
Ну вообще-тоb=a-10*(a/10)кажись при любом а дает ноль. Убери эту формулу. Она как минимум мусорная.
ViEm (2007-01-29 10:25:00) [8]В сканах и принтах замени %d на %ld
for (i=0;i=d;i++)
на
for (i=0;i<d;i++)
и вот это b=a-10*(a/10); вполне считаецца как b=a%10
удачи.