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

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

Войти
Регистрация
Восстановить пароль
 
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
#1

Ошибка в типе данных - C++

16.11.2012, 19:39. Просмотров 317. Ответов 7
Метки нет (Все метки)

недавно начала учиться программировать в си++, не могу понять в чем ошибка:
нужно написать программу,которая бы считала среднее геометрическое 10 введенных чисел.
Когда пишу так, то программа работает, но округляет числа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
 
int main()
{
int dig[10];
int i,n,P,srg ;
printf(" N=\n");
scanf("%d",&n);
printf("\n vvedite massiv dig \n");
for(i=0;i<n;i++)
scanf("%d",&dig[i]);
for (P=1,i=0;i<n;i++)
    P*=dig[i];
    printf("proisvedenie=%d\n",P);
srg=pow(P,0.1);
printf("srednee geometricheskoe=%d\n", srg);
}
пробовала через переменную double, но в ответ выводит очень большое непонятное число

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
 
int main()
{
int dig[10];
int i,n,P;
long double srg;
printf(" N=\n");
scanf("%d",&n);
printf("\n vvedite massiv dig \n");
for(i=0;i<n;i++)
scanf("%d",&dig[i]);
for (P=1,i=0;i<n;i++)
    P*=dig[i];
    printf("proisvedenie=%d\n",P);
srg=pow(P,0.1);
printf("srednee geometricheskoe=%d\n", srg);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.11.2012, 20:14     Ошибка в типе данных #2
Когда число целое, то программа просто отбрасывает остаток.
А когда double, то показывает цифры после запятой.

Вроде все правильно
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
16.11.2012, 20:39  [ТС]     Ошибка в типе данных #3
А ещё, в 18 строчке должно быть в возведение в степень "1/n" (так как n=10,я написала 0.1), почему когда я пишу вместо 0.1 - (1/n) у меня подчеркивается функция "pow" и выскакивает ошибка: "существует более одного экземпляра перегруженная функция "pow",соответствующего списку аргументов"?Не знаете,как это можно исправить или заменить?
advajta
1 / 1 / 0
Регистрация: 20.06.2012
Сообщений: 12
16.11.2012, 20:49     Ошибка в типе данных #4
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <stdio.h>
#include <math.h>
 
int main()
{
float dig[10];
float i,n,P;
long double srg;
printf(" N=\n");
scanf("%f",&n);
printf("\n vvedite massiv dig \n");
for(i=0;i<n;i++)
scanf("%d",&dig[i]);
for (P=1,i=0;i<n;i++)
    P*=dig[i];
    printf("proisvedenie=%d\n",P);
srg=pow(P,0.1);
printf("srednee geometricheskoe=%d\n", srg);
}
По пробуй так
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
16.11.2012, 20:50     Ошибка в типе данных #5
Цитата Сообщение от marina11 Посмотреть сообщение
почему когда я пишу вместо 0.1 - (1/n) у меня подчеркивается функция "pow" и выскакивает ошибка: "существует более одного экземпляра перегруженная функция "pow",соответствующего списку аргументов"?Не знаете,как это можно исправить или заменить?
записать (1./n)
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
16.11.2012, 21:11  [ТС]     Ошибка в типе данных #6
Цитата Сообщение от valeriikozlov Посмотреть сообщение
записать (1./n)
спасибо, это помогло!
но вот конечное число всё же остаётся очень большим... явно не возведение в степень меньше единицы...
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
16.11.2012, 21:19     Ошибка в типе данных #7
Цитата Сообщение от marina11 Посмотреть сообщение
но вот конечное число всё же остаётся очень большим... явно не возведение в степень меньше единицы...
у Вас ошибка здесь:
Цитата Сообщение от marina11 Посмотреть сообщение
C
1
printf("srednee geometricheskoe=%d\n", srg);
замените на:
C
1
printf("srednee geometricheskoe=%lf\n", srg);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2012, 21:24     Ошибка в типе данных
Еще ссылки по теме:

C++ Где можно узнать о типе HDC?
C++ Ошибка в типе данных 'String' and 'System::String'
C++ Что, если заменить точку на запятую в типе double
C++ Ошибка в типе переменных
Битовые операции на длинном типе C++

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

Или воспользуйтесь поиском по форуму:
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
16.11.2012, 21:24  [ТС]     Ошибка в типе данных #8
Цитата Сообщение от valeriikozlov Посмотреть сообщение
у Вас ошибка здесь:

замените на:
C
1
printf("srednee geometricheskoe=%lf\n", srg);
огромное вам спасибо!теперь все работает!
Yandex
Объявления
16.11.2012, 21:24     Ошибка в типе данных
Ответ Создать тему
Опции темы

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