Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.029 c
11-1148041898
vvedensky
2006-05-19 16:31
2007.02.18
IRC и KOL


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


2-1169900656
NightRain
2007-01-27 15:24
2007.02.18
А можно в ComboBoxs заблокировать одну строку?


15-1169887107
$Pl@Sh
2007-01-27 11:38
2007.02.18
Новое на сайте


4-1160485528
DVM
2006-10-10 17:05
2007.02.18
Почему при выполнении этого возрастает счетчик дискрипторов?




   Наверх