Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

Вопрос по си++, знаю что это форум по Делфи...   Найти похожие ветки 

 
anonimousC++   (2007-01-29 09:26) [0]

Сори что я лезу тут с вопросом по с++, но увы не знаю форумов по с++, а тратить время на регистрацию и поиск форумов, у меня времени нет, оч. срочно нужно решить проблемму.

Вот у меня такая проблемма - вот код, который считает кол-во разрядов в числе.

#include<stdio.h>
#include<math.h>
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, то все работет...Вот сижу и думаю, или я дурак, или еще что то...


 
Elen ©   (2007-01-29 10:25) [1]


> anonimousC++

Ну вообще-то b=a-10*(a/10) кажись при любом а дает ноль. Убери эту формулу. Она как минимум мусорная.


 
ViEm   (2007-01-29 10:25) [2]

В сканах и принтах замени %d на %ld

for (i=0;i=d;i++)
на
for (i=0;i<d;i++)

и вот это b=a-10*(a/10); вполне считаецца как b=a%10

удачи.


 
ViEm   (2007-01-29 10:39) [3]


> Ну вообще-то b=a-10*(a/10) кажись при любом а дает ноль.
>  Убери эту формулу. Она как минимум мусорная.
>


это же целые числа :)))


 
Elen ©   (2007-01-29 10:44) [4]


> это же целые числа

И что?


 
ViEm   (2007-01-29 10:48) [5]


> > это же целые числа
>
> И что?
>

то, что (a/10) - даст целочисленное деление.
а 10*(a/10) даст делящийся на 10 кусок a
а a-10*(a/10) даст остаток от деления a на 10

поэтому тип числа тут очень важен.

но вся эта конструкция просто и однозначно заменяется на b=a%10;


 
Elen ©   (2007-01-29 10:51) [6]


> ViEm

А-а. Ну да тип у него интовский. Но формула конечно мутная.


 
Elen ©   (2007-01-29 10:54) [7]

В таком случае баг может быть только в первом Scanf.
Как сказал ViEm scanf("%ld",&a); Ну в общем для лонга...


 
Игорь Шевченко ©   (2007-01-29 12:03) [8]


> а тратить время на регистрацию и поиск форумов, у меня времени
> нет


Если ты такой занятой, почему такой глупый ?



Страницы: 1 вся ветка

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.149 c
11-1148486838
Alexei6021
2006-05-24 20:07
2007.02.18
Перекодировка ANSI-Dos(OEM)


15-1170081313
Cyrax
2007-01-29 17:35
2007.02.18
Протокол Y-modem


1-1166979394
Нулевой
2006-12-24 19:56
2007.02.18
Ни как не могу убрать мерцание картинки!


1-1166872599
S_T_E_P_A_N___
2006-12-23 14:16
2007.02.18
Управление веб-сайтами из Delphi-программы


1-1166783436
STIK
2006-12-22 13:30
2007.02.18
Сохранение компоненты.