Ошибка отсутствуют экземпляры перегруженная функция

Пишу программу на языке C++:

#include "stdafx.h"
#include "12.h"
#include<iostream>
#include<math.h>
using namespace std;
void main ()
{
    setlocale(LC_ALL, "Russian");
    double x, y, b, u;
    cout << "Введите x,yn";
    cin >> x >> y;
    b = pow(x, 2.)*y;
    if (b <= 0) 
        u = tan(x);
    else if (b >= 15)
         u = fabs(pow(x,exp(1.)) - y);
    else 
        u = x*pow(sin,3.)*x;
    cout << "Исходные данныеn";
    cout << "x=" << x << "y=" << y << "n";
    cout << "Промежуточный результатn";
    cout << "b=" << b << "n";
    cout << "Окончательный результатn";
    cout << "u=" << u << "n";
}

Но в строке else u = x*pow(sin,3.)*x; выдает две ошибки:
Первая:

Отсутствуют экземпляры перегруженная функция pow, соответствующие
списку аргументов, типы аргументов (<unknown-type>, double)

Вторая:

Не удается определить экземпляр перегруженная функция sin,
использование которого предполагается

Как их исправить?

Nicolas Chabanovsky's user avatar

задан 6 окт 2015 в 14:45

Ксения Ким's user avatar

1

Во-первых, примите за привычку форматировать свой код. Пусть в данной ситуации вам это не сильно поможет, но в будущем вы сможете избежать множества досадных ошибок.

Во-вторых, в строке, в которой ошибка вы в качестве аргумента функции pow используете функцию sin. Скорее всего, вы имели ввиду что-то вроде else u = x*pow(sin(x),3.)*x;, но опечатались.

И ещё: очень рекомендую брать код веток if/else/for/while в фигурные скобки, даже если там всего одна строка. Сам множество раз сталкивался с ситуациями, когда в такие ветки дописывалась вторая строка, а скобки не ставились, что вело к весьма неприятным ошибкам.

ответ дан 6 окт 2015 в 14:59

fori1ton's user avatar

fori1tonfori1ton

23.3k3 золотых знака49 серебряных знаков70 бронзовых знаков

2

18.01.2014, 02:19. Показов 56743. Ответов 6


Студворк — интернет-сервис помощи студентам

не могу решить проблему

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include "conio.h"
#include "stdio.h"
#include <windows.h>
#include <fstream>
#include <locale.h>
#include <iostream>
#include <string>
 
using namespace std;
 
string generaterazdel(){
    string d;
    
    for(int i = 0 ; i < 20; ++i){
    d.push_back('-');}
    return d;}
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    char razdel[] = "------------------------------";//generaterazdel();
    setlocale(LC_ALL,"rus");
    int w;
    int i=0;
    char d;
 
    printf("Нажмите 1 для слияния 3-х файлов или 2 для их восстановления:n");
    scanf_s("%d",&w);
    printf("%d",w);     
    
    switch(w)
    {
        char buf;
    case 1:
        {
            fstream in("1/1.txt", ios::in);
            fstream out("1/out.txt", ios::out );
            fstream in1("1/2.txt", ios::in );
            fstream in2("1/3.txt", ios::in );
            
            out << razdel << endl;
            while (!in.eof())
            {
                buf = (char)in.get();
                if(-1 == buf)
                    break;
                out << buf;
                cout << buf;
            }
            out << endl << razdel << endl;
            cout << endl << razdel << endl;
            while (!in1.eof())
            {
                buf = (char)in1.get();
                if(-1 == buf)break;
                out << buf;
                cout << buf;
            }
            out << endl << razdel << endl;
            cout << endl << razdel << endl;
 
            while (!in2.eof())
            {
                buf = (char)in2.get();
                if(-1 == buf)break;
                out << buf;
                cout << buf;
            }
            in2.close();
            in1.close();
            in.close();
            out.close();
            break;
        }
    case 2:
        {
            fstream in("1/1.txt", ios::out);
            fstream out("1/out.txt",  ios::in);
            fstream in1("1/2.txt",  ios::out);
            fstream in2("1/3.txt",  ios::out);
            string line;
            
            std::getline(out,razdel);
            while(std::getline(out,line) && line.compare(razdel)){
                in << line << endl;
            }
            while(std::getline(out,line) && line.compare(razdel)){
                in1 << line<< endl;
            }
            while(std::getline(out,line) && line.compare(razdel)){
                in2 << line<< endl;
            }
            in2.close();
            in1.close();
            in.close();
            out.close();
            break;
        }
    }
    return 0;
}

std::getline(out,razdel); — отсутствуют экземпляры перегруженная функция std::getline, соответствующие списку аргументов

c:……kursach.cpp(1): warning C4603: _CRT_SECURE_NO_WARNINGS: макрос не определен или определение изменилось после использования предкомпилированного заголовка
1> Добавление макроопределения в предкомпилированный заголовок вместо определения его здесь
1> c:users5documentsvisual studio 2010projectskursachkursachkursach.cpp(2): использование предкомпилированного заголовка
1>c:……kursach.cpp(85): error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для «std::basic_istream<_Elem,_Traits> &» из «std::fstream»
1> c:program files (x86)microsoft visual studio 10.0vcincludestring(479): см. объявление «std::getline»
1>c:……kursach.cpp(85): error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для «std::basic_istream<_Elem,_Traits> &» из «std::fstream»
1> c:program files (x86)microsoft visual studio 10.0vcincludestring(479): см. объявление «std::getline»
1>c:……kursach.cpp(85): error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для «std::basic_string<_Elem,_Traits,_Alloc> &» из «char [31]»
1> c:program files (x86)microsoft visual studio 10.0vcincludestring(479): см. объявление «std::getline»
1>c:……kursach.cpp(85): error C2780: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem): требует аргументов: 3, имеется: 2
1> c:program files (x86)microsoft visual studio 10.0vcincludestring(468): см. объявление «std::getline»
1>c:……kursach.cpp(85): error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &&,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для «std::basic_istream<_Elem,_Traits> &&» из «std::fstream»
1> c:program files (x86)microsoft visual studio 10.0vcincludestring(448): см. объявление «std::getline»
1>c:……kursach.cpp(85): error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &&,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для «std::basic_istream<_Elem,_Traits> &&» из «std::fstream»
1> c:program files (x86)microsoft visual studio 10.0vcincludestring(448): см. объявление «std::getline»
1>c:……kursach.cpp(85): error C2784: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &&,std::basic_string<_Elem,_Traits,_Alloc> &): не удалось вывести аргумент шаблон для «std::basic_string<_Elem,_Traits,_Alloc> &» из «char [31]»
1> c:program files (x86)microsoft visual studio 10.0vcincludestring(448): см. объявление «std::getline»
1>c:……kursach.cpp(85): error C2780: std::basic_istream<_Elem,_Traits> &std::getline(std::basic_istream<_Elem,_Traits> &&,std::basic_string<_Elem,_Traits,_Alloc> &,const _Elem): требует аргументов: 3, имеется: 2
1> c:program files (x86)microsoft visual studio 10.0vcincludestring(395): см. объявление «std::getline»
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.67
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========



0



// stock.h

#ifndef STOCK_H
#define STOCK_H

// declare Stock Class
class Stock
{
private:
    string StockExchange;
    string Symbol;
    string Company;
    double Price;
    int Shares;
public:
    Stock();
    Stock(string stockExchange, string symbol, string company, double price, int shares);
    void displayStockInfo();
    void setStockInfo(string stockExchange, string symbol, string company, double price, int shares);
    double getValue();
    bool operator < (Stock & aStock);
    bool Stock::operator > (Stock & aStock);
};

#endif

[break]

//main.cpp

#include <string>
#include <iostream>
#include <iomanip>
#include <fstream>

#include "stock.h"

using std::string;
using std::endl;
using std::cout;
using std::setw;
using std::ifstream;


// *******************************
// Stock class

Stock::Stock() {
    StockExchange = "";
    Symbol = "";
    Company = "";
    Price = 0.0;
    Shares = 0;
}

Stock::Stock(string stockExchange, string symbol, string company, double price, int shares) {
    StockExchange = stockExchange;
    Symbol = symbol;
    Company = company;
    Price = price;
    Shares = shares;
}


// end Stock class
// *******************************

...

My error says something along the lines of «no instance of overloaded function Stock::Stock(string stockExchange, string symbol, string company, double price, int shares) exists.»

What am I doing wrong? I see it in my header file.

Пишу программу на языке C++:

#include "stdafx.h"
#include "12.h"
#include<iostream>
#include<math.h>
using namespace std;
void main ()
{
    setlocale(LC_ALL, "Russian");
    double x, y, b, u;
    cout << "Введите x,yn";
    cin >> x >> y;
    b = pow(x, 2.)*y;
    if (b <= 0) 
        u = tan(x);
    else if (b >= 15)
         u = fabs(pow(x,exp(1.)) - y);
    else 
        u = x*pow(sin,3.)*x;
    cout << "Исходные данныеn";
    cout << "x=" << x << "y=" << y << "n";
    cout << "Промежуточный результатn";
    cout << "b=" << b << "n";
    cout << "Окончательный результатn";
    cout << "u=" << u << "n";
}

Но в строке else u = x*pow(sin,3.)*x; выдает две ошибки:
Первая:

Отсутствуют экземпляры перегруженная функция pow, соответствующие
списку аргументов, типы аргументов (<unknown-type>, double)

Вторая:

Не удается определить экземпляр перегруженная функция sin,
использование которого предполагается

Как их исправить?

#include <iostream>
#include<math.h>
using namespace std;

int main()
{
	setlocale(LC_ALL, "Ukrainian");
	float a, b, x, m, r;
	cout << "a=";
	cin >> a;
	if (a >= 3.6)
		b = pow ((a - 2.1) / 5);
	else b = 3 + (pow(a, 2) / 5);
	x = (1.2*pow(b, 3) - exp(fabs(a))) / pow((2 * a - b), 2);
	m = atan(fabs(x / pow(a, 2))) - sqrt(2 * a*a*sqrt(3 * x*x));
	r = (m / (3 * a)) - (2 * (sin(m*m + pow(a, 4)) / cos(m*m + pow(a, 4)))) / sqrt(fabs(m - a));
	cout << "при a=" << a << "b=" << b << "x=" << x << "m=" << m << "r=" << r;
	return 0;
}

—————————————————————————————
b = pow ((a - 2.1) / 5) — Почему подчеркивает pow?

Понравилась статья? Поделить с друзьями:
  • Ошибка отсутствуют файлы dll для windows
  • Ошибка отсутствуют способы подтверждения мкб
  • Ошибка отсутствуют разрешения на открытие этого файла
  • Ошибка отсутствуют обязательные параметры uid и usess
  • Ошибка отсутствуют общие алгоритмы шифрования