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

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

Восстановить пароль Регистрация
 
Nikita19041
0 / 0 / 0
Регистрация: 16.09.2013
Сообщений: 25
16.09.2013, 15:13     Задача не компилиться #1
Вот решил освоить данный язык программирования и столкнулся со следующими проблемами:
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++ есть вложенный класс который является другом объемлюющего и всё это должно компилиться.
Простейшая прога но не хочет компилиться C++
Почему программа компилится, хотя компилиться не должна? C++
C++ Функция русификации перестала компилиться
C++ Компилиться везде кроме визуал

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5284 / 4803 / 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,164
Завершенные тесты: 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,164
Завершенные тесты: 2
16.09.2013, 15:44     Задача не компилиться #6
void Summa (double &x, int &k, double &s)
здесь параметры функции - это ссылки, про ссылки гугл хорошо рассказывает, а здесь
pow(&x,i) - &x - взятие адреса у переменной на которую указывает ссылка x, а надо в pow передать два числа
alsav22
5284 / 4803 / 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
5284 / 4803 / 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
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.09.2013, 16:43     Задача не компилиться #12
Цитата Сообщение от Deexof_ Посмотреть сообщение
Вектор размышления я задал, дальше будет уже не педагогично
Размышлять об ошибке, которую предложили сделать? А ошибки предлагать - это, по-вашему, педагогично?
Yandex
Объявления
16.09.2013, 16:43     Задача не компилиться
Ответ Создать тему
Опции темы

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