Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
\\max
4 / 4 / 1
Регистрация: 19.05.2012
Сообщений: 19
#1

Простейшая прога но не хочет компилиться - C++

31.05.2012, 09:44. Просмотров 664. Ответов 13
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main()
{
    int i ;
    scanf("%d",&i);
    int kol = 1;
    double d = i;
    for(int j = 0;  ; j++)
    {
        d = d / 10;
        if( d < 1 ) break;
        else kol++;
    }
    int ost;
    int sum;
    printf( "%d\n", kol );
    for(int l = 0; l < kol ; l++)
    {
        ost = i % pow(10,kol-l-1);
        sum += (i - ost) / pow(10,kol-l-1);
        i = ost;
    }
    printf("%d",sum);
    getch();
    return 0;
}
Компилятор ругается на эту строку
ost = i % pow(10,kol-l-1);
пишет :
Illegal use of floating point in function main()
Скажите пожалуйста в чем проблема?
Заранее благодарен.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 09:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Простейшая прога но не хочет компилиться (C++):

Элементарная прога. Не компилиться. Где напортачил? - C++
Здрасьте, господа в джинсах и потёртых свитрах :) В общем задали в универе написать программу для решения уравнения. В C++ я не силён,...

Работа со строками . Простейшая прога выдаёт ошибки ( - C++
код: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;string&gt; using namespace std; int main() { char s1, char s2; ...

Учу классы. Не запускается простейшая прога.Не могу понять причину - C++
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class MyDogs{ public: int...

Задача не компилиться - C++
Вот решил освоить данный язык программирования и столкнулся со следующими проблемами: // KR_3.cpp: определяет точку входа для консольного...

Не компилиться код - C++
помогите пожалуйста разобраться с этой проблемой

Компилиться везде кроме визуал - C++
Виснет на 17 строчке, подскажите в чем дело. задача простая - в алфавитно порядке показать количество каждого слова. Компилится в dev++,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Лжец
31 / 31 / 3
Регистрация: 13.12.2011
Сообщений: 106
31.05.2012, 09:51 #2
C++
1
ost =  i % (int)pow(10,kol-l-1);
Но это плохое решение. Ругается на то, что ты пытаешься поделить по модулю тип данных double, а этого сделать нельзя.
1
\\max
4 / 4 / 1
Регистрация: 19.05.2012
Сообщений: 19
31.05.2012, 10:02  [ТС] #3
Цитата Сообщение от Лжец Посмотреть сообщение
Но это плохое решение. Ругается на то, что ты пытаешься поделить по модулю тип данных double, а этого сделать нельзя.
я делю int на 10 в степени (kol-l-1)
при чём тут double?
0
defer
秘密
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
31.05.2012, 10:07 #4
автоматическое приведение типов

pow объявлен так pow(double _X, double _Y) и результат приводится к double
1
Лжец
31 / 31 / 3
Регистрация: 13.12.2011
Сообщений: 106
31.05.2012, 10:09 #5
Единственное, что могу сказать, функция pow() перегружена в том числе и на double, возможно в связи с какими-то известными компилятору "соображениями", он использует именно её.

Лично у меня, при компиляции вашего кода вышло следующее:

error C2297: '%' : illegal, right operand has type 'double'
Отсюда и вывод об ошибке и ее решении.

Upd:
Собственно вам уже ответили.
0
\\max
4 / 4 / 1
Регистрация: 19.05.2012
Сообщений: 19
31.05.2012, 10:16  [ТС] #6
Есть всё сделал работает пришлось еще чуток подкоректировать код и получилось

Добавлено через 1 минуту
Заменил предыдущую строку таким видом и поменял тип одной переменной с инта на дабл и пошло
p = pow(10,kol-l-1);
ost = i % p;


Еще раз всем спасибо!
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
31.05.2012, 10:24 #7
Почему-то у многих возведение целого числа в целую степень
выполняется через функцию pow(), которая возводит действительное число
в действительную стемень. Зачем издеваться над компьютером!
C++
1
2
3
4
5
6
7
int pown(int n,int m)
{
    int r=1;
    for(int i=0;i<m;i++)
         r*=n;
    return r;
}
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
31.05.2012, 10:47 #8
Цитата Сообщение от \\max Посмотреть сообщение
я делю int на 10 в степени (kol-l-1)
при чём тут double?
при типе функции.

Добавлено через 2 минуты
Цитата Сообщение от defer Посмотреть сообщение
и результат приводится к double
бред сивой кобылы, если результат подставляется в интовый оператор, то приводиться к double уже не может. Да и если бы приводился, то компилятор бы не ругался: он ругается именно на то, что привести не может. Результат уже double, а приводятся параметры функции.

Добавлено через 3 минуты
Цитата Сообщение от \\max Посмотреть сообщение
Заменил предыдущую строку таким видом и поменял тип одной переменной с инта на дабл и пошло
p = pow(10,kol-l-1);
ost = i % p;
то есть i теперь тоже double? Ещё хуже. Тебе надо избавиться от даблов, а ты плодишь их на пустом месте. Перегрузи функцию на
C++
1
int pow(int, unsigned int)
.

Добавлено через 2 минуты
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
6
7
int pown(int n,int m)
{
  int r=1;
  for(int i=0;i<m;i++)
    r*=n;
  return r;
}
не правильно: если показатель знаковый, то значение степени может быть и дробным. Надо хотя бы так:
C++
1
2
3
4
5
6
7
8
9
int pown(int a, unsigned int n)
{
 int r;
 for(r=1; n>0; --n)
 {
  r*=a;
 }
 return r;
}
.
1
\\max
4 / 4 / 1
Регистрация: 19.05.2012
Сообщений: 19
31.05.2012, 10:49  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
int main()
{
    int i ;
    scanf("%d",&i);
    int kol = 1;
    double d = i;
    for(int j = 0;  ; j++)
    {
        d = d / 10;
        if( d < 1 ) break;
        else kol++;
    }
    int ost;
    double sum;
    int p;
 
    printf( "%d\n", kol );
    for(int l = 0; l < kol ; l++)
    {
        p = pow(10,kol-l-1);
        ost = i % p;
        sum += (i - ost) / p;
        i = ost;
    }
    printf("%lf",sum);
    getch();
    return 0;
}
вот код
Цитата Сообщение от taras atavin Посмотреть сообщение
то есть i теперь тоже double?
нет конечно зачем это делать?? я переменную sum в дабл запилил
0
-=ЮрА=-
31.05.2012, 11:23
  #10

Не по теме:

\\max, можно увидеть твоё задание к программе?

0
\\max
4 / 4 / 1
Регистрация: 19.05.2012
Сообщений: 19
31.05.2012, 11:27  [ТС] #11
нжно посчитать сумму цифр с каких состоит число например: 1927 =1+9+2+7 = 19
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
31.05.2012, 11:29 #12
Все делается на много проще:
C++
1
2
3
4
while ( number != 0 ) {
   sum += number % 10;
   number /= 10;
}
1
-=ЮрА=-
Заблокирован
Автор FAQ
31.05.2012, 11:49 #13
Цитата Сообщение от \\max Посмотреть сообщение
нжно посчитать сумму цифр с каких состоит число например: 1927 =1+9+2+7 = 19
- это задание на 5-ть строк кода

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    int val;
    while(true)
    {
        cout<<"Enter value : ";cin>>val;
        if(val < 0)
            val = -1*val;
        int sum = val%10;
        while(val /= 10)
            sum += val%10;
        cout<<"Digits sum : "<<sum<<endl;
    }
    return 0;
}
PS:Toshkarik, всё норм только не забываем о том что можем ввести и отрицательное тогда разряды будут идти с минусом
1
Миниатюры
Простейшая прога но не хочет компилиться  
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
31.05.2012, 11:52 #14
Это был всего лишь намек так сказать
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2012, 11:52
Привет! Вот еще темы с ответами:

Функция русификации перестала компилиться - C++
Раньше эта функция очень успешно не то что компилировалась, а даж работала. Она позволяет при работе программ нормально выводить русский...

Почему программа компилится, хотя компилиться не должна? - C++
#include &lt;windows.h&gt; #include &lt;stdio.h&gt; using namespace std; class foo { public: foo () {} };

есть вложенный класс который является другом объемлюющего и всё это должно компилиться. - C++
Сперва логика: Есть класс matrix. И есть класс diagonal; так я поразмыслил и пришёл к выводу, что объект diagonal в отрыве от объекта...

простейшая прога( - Assembler
Я ток начал учить асм и вот трабл в самом начале. Знакомый скинул ,по его словам, простейшую прогу. А она у меня не компилится(. Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.05.2012, 11:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru