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

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

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

Задача не компилиться - C++

16.09.2013, 15:13. Просмотров 460. Ответов 11
Метки нет (Все метки)

Вот решил освоить данный язык программирования и столкнулся со следующими проблемами:
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// KR_3.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "iostream"
#include "math.h"
#include "iomanip"
using namespace std;
 
double Summa (double, int);
void Summa (double*, int*,double*);
void Summa (double&, int&,double&);
const double PI = 4.*atan(1.);
 
int main()
{
  double  s, x, a, b, h;
  int     k;
  setlocale(LC_ALL, "Russian");
  cout<<"Вас приветствует учебная программа по вычислению функции, пожалуста введите\nисходные данные...\n";
  cout << "Введите a, b, h, k:" << endl;
  cin >> a >> b >> h >> k;
  cout << "\n     Value"<<setw(20)<<"Pointer"<<setw(24)<<"Reference\n";
  x = a;
  do                                                    
  {
    cout << setw(5) << x << setw(10) << Summa (x, k);
 
    Summa (&x, &k,&s);
    cout << setw(10) << x << setw(10) << s ;
 
    Summa (x, k, s);
    cout << setw(10) << x << setw(10) << s<< endl;
    x += h;
  } 
    while (x <= b + h/2);
  cout << endl;
  return 0;
}
 
double Summa (double x, int k)
{
    double s; 
    int i;
    s = 0;
    for (i = 1; i <= k; i++)
         s+=(cos(i*PI)/(i+1))*pow(x,i);
    return s;
}
 
void Summa (double *x, int *k, double *s)
{
    int i;
    *s = 0;
    for (i = 1; i <= *k; i++)
         *s+=(cos(i*PI)/(i+1))*pow(*x,i);
}
 
void Summa (double &x, int &k, double &s)
{
    int i;
    s = 0;
    for (i = 1; i <= k; i++)
         s+=(cos(i*PI)/(i+1))*pow(&x,i);
 
    return 0;
}
При компиляции следующие ошибки:
1>------ Построение начато: проект: KR_3, Конфигурация: Debug Win32 ------
1>Построение начато 16.09.2013 14:05:30.
1>InitializeBuildStatus:
1> Обращение к "Debug\KR_3.unsuccessfulbuild".
1>ClCompile:
1> Для всех выходных данных обновления не требуется.
1> KR_3.cpp
1>d:\c++ задание\проекты\kr_3\kr_3\kr_3.cpp(64): error C2665: pow: ни одна из 6 перегрузок не может преобразовать все типы аргументов
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(122): может быть "double pow(double,double)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(497): или "double pow(double,int)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(533): или "float pow(float,float)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(535): или "float pow(float,int)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(581): или "long double pow(long double,long double)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(583): или "long double pow(long double,int)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(122): или "double pow(double,double)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(497): или "double pow(double,int)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(533): или "float pow(float,float)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(535): или "float pow(float,int)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(581): или "long double pow(long double,long double)"
1> c:\program files\microsoft visual studio 10.0\vc\include\math.h(583): или "long double pow(long double,int)"
1> при попытке сопоставить список аргументов "(double *, int)"
1>d:\c++ задание\проекты\kr_3\kr_3\kr_3.cpp(66): error C2562: Summa: функция типа "void", возвращающая значение
1> d:\c++ задание\проекты\kr_3\kr_3\kr_3.cpp(12): см. объявление "Summa"
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.53
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Помогите разобраться, где и как я накосячил
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 15:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача не компилиться (C++):

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

Простейшая прога но не хочет компилиться - C++
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main() { int i ; scanf(&quot;%d&quot;,&amp;i); int kol = 1; double d =...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 15:21 #2
C++
1
2
3
4
5
6
7
void Summa (double &x, int &k, double &s)
{
    int i;
    s = 0;
    for (i = 1; i <= k; i++)
         s+=(cos(i*PI)/(i+1))*pow(x,i);
}
Nikita19041
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 25
16.09.2013, 15:24  [ТС] #3
Как я понимаю, идет ошибка в синтаксисе передачи параметров по значению, ссылке и адресу, мб кто подскажет правильный синтаксис, если у меня неправильный...

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
2
3
4
5
6
7
void Summa (double &x, int &k, double &s)
{
    int i;
    s = 0;
    for (i = 1; i <= k; i++)
         s+=(cos(i*PI)/(i+1))*pow(x,i);
}
я конечно же понимаю, что вы все гении с++, но я только вчера начал его осваивать, так что прошу вас, отвечать как можно подробнее...
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
16.09.2013, 15:35 #4
по русски вроде написано...
Nikita19041
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 25
16.09.2013, 15:39  [ТС] #5
Мне важно понять свою ошибку, а не просто ее исправить=\
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
16.09.2013, 15:44 #6
void Summa (double &x, int &k, double &s)
здесь параметры функции - это ссылки, про ссылки гугл хорошо рассказывает, а здесь
pow(&x,i) - &x - взятие адреса у переменной на которую указывает ссылка x, а надо в pow передать два числа
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 16:04 #7
Цитата Сообщение от Nikita19041 Посмотреть сообщение
при попытке сопоставить список аргументов "(double *, int)"
Т.е., вы первым аргументом передаёте указатель на double, а не double.
Вторая ошибка в том, что фнкция void, а в реализации сделан return 0.
Deexof_
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 6
16.09.2013, 16:07 #8
Амперсанд поставь после имени аргумента
не void Summa (double &x, int &k, double &s)
а
void Summa (double x&, int k&, double s&);
Это две большие разницы
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 16:16 #9
Цитата Сообщение от Deexof_ Посмотреть сообщение
Амперсанд поставь после имени аргумента
Поставить, конечно, можно... А скомпилируется?
Deexof_
1 / 1 / 0
Регистрация: 25.02.2013
Сообщений: 6
16.09.2013, 16:31 #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Поставить, конечно, можно... А скомпилируется?
Вектор размышления я задал, дальше будет уже не педагогично
Nikita19041
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 25
16.09.2013, 16:43  [ТС] #11
Цитата Сообщение от Deexof_ Посмотреть сообщение
Амперсанд поставь после имени аргумента
не void Summa (double &x, int &k, double &s)
а
void Summa (double x&, int k&, double s&);
Это две большие разницы
Если сделать так, как Вы указываете, то тогда при комплияции выдает ошибку, что я не поставил перед & запятую, а так же что у меня появились новые неуказанные переменные. То есть если поставить & после значения, то компилятор не понимает, что это ссылка.
Таким образом или Вы не правы, или же компилятор мой решил юморнуть

Добавлено через 41 секунду
Спасибо всем, что пояснили мне мои проблемы, уже все исправил и скомпилил.
Еще раз огромное спасибо
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 16:43 #12
Цитата Сообщение от Deexof_ Посмотреть сообщение
Вектор размышления я задал, дальше будет уже не педагогично
Размышлять об ошибке, которую предложили сделать? А ошибки предлагать - это, по-вашему, педагогично?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2013, 16:43
Привет! Вот еще темы с ответами:

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

Не компилиться программа - C++ Qt
Создал проект C++, с формой, но при запуске слева появляется слово сборка, а потом исчезает и все, а как я понял, при запуске, сразу должно...

не компилиться код - Delphi
подскажите чего не хватает?

не компилиться ехе - C++ Builder
народ помогайте, файл компилируеться он если перенести exe файл на комп где нету с++ не работает выдает ошибку что нету фалов с++ типо что...


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

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

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