Тип возвращаемого значения не соответствует типу функции c как исправить

Тип возвращаемого значения не соответствует типу функции C++ Решение и ответ на вопрос 1197967

Zakat

6 / 6 / 1

Регистрация: 24.12.2012

Сообщений: 150

1

Тип возвращаемого значения не соответствует типу функции

03.06.2014, 18:02. Показов 27160. Ответов 5

Метки нет (Все метки)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    double get_left (void);
    {
        double e, c;
        e = ex - a;
        c = cx - r;
        return max(e, c);
    }
    
    double get_right (void);
    {
        double e, c;
        e = ex + a;
        c = cx + r;
        return min (e, c);
    }
    
    double sqr (double x);
    {
        return x * x;
    }

здесь после каждой функции стоит » ; » поэтому тему так назвал, не понимаю, если » ; » не ставить ошибка, мол требуется » ; «
MS Visual C++ 2010 экспресс-выпуск

Добавлено через 1 минуту
где

C++
1
return max(e, c);

возникает ошибка соответствия типов, переписываю код с борланда, но там тоже не идет…

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Don’t worry, be happy

17784 / 10550 / 2036

Регистрация: 27.09.2012

Сообщений: 26,536

Записей в блоге: 1

03.06.2014, 18:03

2

Цитата
Сообщение от Zakat
Посмотреть сообщение

если » ; » не ставить ошибка, мол требуется » ; «

значит где-то до этого не поставили или еще чего. Код показывайте

Добавлено через 28 секунд

Цитата
Сообщение от Zakat
Посмотреть сообщение

здесь после каждой функции стоит » ; «

а не должно стоять



0



ExModE

2 / 2 / 3

Регистрация: 04.03.2011

Сообщений: 27

03.06.2014, 18:07

3

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
double get_left (void)
    {
        double e, c;
        e = ex - a;
        c = cx - r;
        return (double)max(e, c);
    }
    
    double get_right (void)
    {
        double e, c;
        e = ex + a;
        c = cx + r;
        return (double)min (e, c);
    }
    
    double sqr (double x)
    {
        return x * x;
    }



0



Zakat

6 / 6 / 1

Регистрация: 24.12.2012

Сообщений: 150

03.06.2014, 18:20

 [ТС]

4

Цитата
Сообщение от Croessmah
Посмотреть сообщение

значит где-то до этого не поставили или еще чего. Код показывайте

ну уж если бы забыл перед функцией воткнуть то это было бы видно

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
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <Windows.h>
#include <iostream>
#include <iomanip>
using namespace std;
 
void main(void)
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);   
    
    //ордината центра эллипса
    double ey = -7.0;
    //абцисса центра эллипса
    double ex = -40.0 - sqrt(961.0);
    //остальные параметры эллипса
    double a = 31.0;
    double a2 = 961.0;
    double b = 38.0;
    double b2 = 1444.0;
 
    //абцисса центра окружности
    double cx = 1.0;
    //ордината центра окружности
    double= -20.0 + sqrt(960.0);
    //остальные параметры окружности
    double r = 31.0;
    double r2 = 961.0;
 
    //Шаг сканирования 
    double step = 0.00001;
 
    //общая левая граница пересечений эллипса и окружности
    double get_left (void)
    {
        double e, c;
        e = ex - a;
        c = cx - r;
        return max(e, c);
    }
    //общая правая граница пересечений эллипса и окружности
    double get_right (void)
    {
        double e, c;
        e = ex + a;
        c = cx + r;
        return min (e, c);
    }
    //вспомогательная функция для возведения в квадрат
    double sqr (double x)
    {
        return x * x;
    }
 
 
}

причем это только в 38 строке скобка » { » подсвечивается



0



Don’t worry, be happy

17784 / 10550 / 2036

Регистрация: 27.09.2012

Сообщений: 26,536

Записей в блоге: 1

03.06.2014, 18:24

5

функции из main уберите



1



6 / 6 / 1

Регистрация: 24.12.2012

Сообщений: 150

03.06.2014, 18:27

 [ТС]

6

О_о error C2601: недопустимые локальные переменные функций

Добавлено через 1 минуту
емае… не надо было поверх старого проекта писать))



0



Я начал изучать C ++ несколько дней назад, и теперь я пытаюсь сделать свою первую программу — приложение «телефонной книги». Появятся имена людей, которых я знаю, я введу имя человека, которому нужен номер, и появится их номер.

Но сейчас я некоторое время отлаживаю и до сих пор не понимаю, что не так с моим кодом! Я уверен, что это очевидно, но я слишком новичок, чтобы понять это.

    #include <stdafx.h> // Visual Studio users need to uncomment this line
#include <iostream>

int nameAppears()
{
std::cout << "Alex" <<    std::endl;
std::cout << "Andre" << std::endl;
std::cout << "Guy" <<   std::endl;
std::cout << "Grand-ma" <<        std::endl;
std::cout << "Grand-pa" <<        std::endl;
std::cout << "Jérémy" <<  std::endl;
std::cout << "Manon" <<   std::endl;
std::cout << "Nathalie" <<  std::endl;
std::cout << "Stéphanie" << std::endl;
std::cout << "Oliver" << std::endl;
}int enterName()
{
std::cout << "Enter the name you wish to obtain the number:";
int name;
std::cin >> name;
return name;
}int link(name)
{
if (name == "Alex")
return "586 6532";
if (name == "Andre")
return "569 8522";
if (name == "Guy")
return "850 6589";
if (name == "Grand-ma")
return "482 4875";
if (name == "Grand-pa")
return "453 9963";
if (name == "Jérémy")
return "654 3828";
if (name == "Manon")
return "965 4541";
if (name == "Nathalie")
return "770 6916";
if (name == "Stéphanie")
return "546 5482 ";
if (name == "Oliver")
return "246 5554";
}int printNumber (int number)
{
std::cout << "The number is: " << number << std::endl;
}int main()
{
//Make all the names appear
nameAppears();

//Get User's input
int name = enterName();

//Link Name to number
int number = link(name);

//Print the desired number
printNumber(number);
}

Вот список всех ошибок, которые я получил при компиляции в Visual Studio 2013:

  • «не могу открыть исходный файл» stdafx.h «»
  • «идентификатор» имя «не определено» (2 раза подряд)
  • «тип возвращаемого значения не соответствует типу функции» (10 раз подряд)
  • «» имя «: необъявленный идентификатор»
  • «» ссылка: инициализатор в стиле функции выглядит как определение функции «
  • «Термин не относится к функции, принимающей 1 аргумент»

-1

Решение

Когда начать?

В вашей функции:

int enterName()
{
std::cout << "Enter the name you wish to obtain the number:";
int name;
std::cin >> name;
return name;
}

Пользователь должен вставить название но тип name переменная была объявлена ​​как int (который является типом для целое число число). Мой вопрос сейчас: почему имя человека должно кодироваться как число?

Как это решить?

Просто используя строка тип.

#include <string>  // You have to include this header to use string object

// ...

std::string enterName()
{
std::cout << "Enter the name you wish to obtain the number:";
std::string name;
std::cin >> name;
return name;
}

Примечание: есть много соображений о том, как получить строку из стандартного ввода, но я не ваш учитель C ++, и в вашем случае я думаю, что аргумент очень далек от ваших навыков сейчас.

Другая проблема здесь:

int link(name)
{
// do something ...
}

В вашей функции объявления name не имеет типа. Это ошибка! Переменная должна иметь тип в качестве аргумента.

Кроме того, ваша функция тела возвращает «строка» тип:

return "965 4541";  // return a const char[]

Так почему вы объявили, что ваша функция возвращает int тип?

Правильная форма:

std::string link(const std::string& name)  // declaration signature

Даже в этой функции тип неправильный:

int printNumber (int number)
{
std::cout << "The number is: " << number << std::endl;
}

Так должно быть:

void printNumber (const std::string& number)
{
std::cout << "The number is: " << number << std::endl;
}

void как возвращаемый тип, потому что ваша функция ничего не возвращает.

Я вижу недостаток ваших базовых навыков в отношении языка. Я предлагаю вам изучить хорошую книгу по C ++ и начать с нее кодирование.

1

Другие решения

  1. «идентификатор» имя «не определено» вы не объявляете имя переменной внутри ссылки на функцию, правильным является int main (string name)тебе это нужно string,

  2. «тип возвращаемого значения не соответствует типу функции», используя в качестве примера функцию int link(string name), если вы хотите вернуть номер телефона, или вы вернете его как 8506589 (без пробелов), или вы измените тип возврата на строку, чтобы он считал строку и принимал такие вещи, как — или пробел.

3 — Нет необходимости в заголовке stdafx, удалите эту строку и Google для понимания больше об этом.

4 — Вы объявили имя как int, вы должны были объявить как строку.

Чувак, в твоем коде так много проблем, что ты должен подумать о том, чтобы сходить на некоторые видео на YouTube, если ты пытаешься самостоятельно изучить и сначала посмотреть видео для программирования на c, попробуй потом видео из Нью-Бостона … Я помог с несколькими твоими ошибками.

0

На чтение 4 мин Просмотров 1.3к. Опубликовано 31.07.2019

Содержание

  1. Решение
  2. Как это решить?
  3. Правильная форма:
  4. Другие решения

Я начал изучать C ++ несколько дней назад, и теперь я пытаюсь сделать свою первую программу — приложение «телефонной книги». Появятся имена людей, которых я знаю, я введу имя человека, которому нужен номер, и появится их номер.

Но сейчас я некоторое время отлаживаю и до сих пор не понимаю, что не так с моим кодом! Я уверен, что это очевидно, но я слишком новичок, чтобы понять это.

Вот список всех ошибок, которые я получил при компиляции в Visual Studio 2013:

  • «не могу открыть исходный файл» stdafx.h «»
  • «идентификатор» имя «не определено» (2 раза подряд)
  • «тип возвращаемого значения не соответствует типу функции» (10 раз подряд)
  • «» имя «: необъявленный идентификатор»
  • «» ссылка: инициализатор в стиле функции выглядит как определение функции «
  • «Термин не относится к функции, принимающей 1 аргумент»

Решение

В вашей функции:

Пользователь должен вставить название но тип name переменная была объявлена ​​как int (который является типом для целое число число). Мой вопрос сейчас: почему имя человека должно кодироваться как число?

Как это решить?

Просто используя строка тип.

Примечание: есть много соображений о том, как получить строку из стандартного ввода, но я не ваш учитель C ++, и в вашем случае я думаю, что аргумент очень далек от ваших навыков сейчас.

Другая проблема здесь:

В вашей функции объявления name не имеет типа. Это ошибка! Переменная должна иметь тип в качестве аргумента.

Кроме того, ваша функция тела возвращает «строка» тип:

Так почему вы объявили, что ваша функция возвращает int тип?

Правильная форма:

Даже в этой функции тип неправильный:

Так должно быть:

void как возвращаемый тип, потому что ваша функция ничего не возвращает.

Я вижу недостаток ваших базовых навыков в отношении языка. Я предлагаю вам изучить хорошую книгу по C ++ и начать с нее кодирование.

Другие решения

«идентификатор» имя «не определено» вы не объявляете имя переменной внутри ссылки на функцию, правильным является int main (string name) тебе это нужно string ,

«тип возвращаемого значения не соответствует типу функции», используя в качестве примера функцию int link(string name) , если вы хотите вернуть номер телефона, или вы вернете его как 8506589 (без пробелов), или вы измените тип возврата на строку, чтобы он считал строку и принимал такие вещи, как — или пробел.

3 — Нет необходимости в заголовке stdafx, удалите эту строку и Google для понимания больше об этом.

4 — Вы объявили имя как int, вы должны были объявить как строку.

Чувак, в твоем коде так много проблем, что ты должен подумать о том, чтобы сходить на некоторые видео на YouTube, если ты пытаешься самостоятельно изучить и сначала посмотреть видео для программирования на c, попробуй потом видео из Нью-Бостона … Я помог с несколькими твоими ошибками.

#include «stdafx.h»
#include
#include
#include «iostream»
void fun(int);
using namespace std;
void main()
<
int number;

setlocale(LC_ALL, «»);
printf(«введите число
«);
cin >> number;
do <
if (!cin) <
printf(» ошибка ввода:
«);
cin.clear();
cin.ignore(INT_MAX, ‘
‘);
>

fun(number);
>
void fun(int number)
<
int tmp1;
int tmp2;
tmp1 = number % 10; //5
tmp2 = number / 10;
/*if(tmp2 > 0)

if (tmp2 == 0)
<
exit(EXIT_SUCCESS);
>
fun(tmp2);
system(«pause»);
return 0;

Здравствуйте, читаю книгу Герберта Шилдта «Руководство для начинающих».
Есть такой пример :

В функции f(int): 10
В функции f(double): 10.1
В функции f(short): 99
В функции f(double): 11.5

В конце главы проводится проверка знаний и есть такой вопрос:

Учитывается ли тип значения, возвращаемого функцией, в решении о выборе нужной версии перегруженной функции?

Ниже на него есть ответ:

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

Собственно у меня и появился вопрос, почему не учитывается тип данных для выбора версии перегруженной функции, когда после приведения к типу double из float и происходит выбор функции f(double x)?

  • Распечатать

Оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(0 голосов, среднее: 0 из 5)

Поделитесь с друзьями!

Понравилась статья? Поделить с друзьями:
  • Тип безопасности не защищено wifi как исправить
  • Тип wan динамический ip неизвестная ошибка dir 615 mts
  • Техническая ошибка киви геншин
  • Техническая ошибка или опечатка как правильно
  • Техническая ошибка егов