Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
ВнизВопрос по си++, знаю что это форум по Делфи... Найти похожие ветки
← →
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.
Как сказал ViEmscanf("%ld",&a);
Ну в общем для лонга...
← →
Игорь Шевченко © (2007-01-29 12:03) [8]
> а тратить время на регистрацию и поиск форумов, у меня времени
> нет
Если ты такой занятой, почему такой глупый ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.083 c