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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 72, средняя оценка - 4.97
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
#1

error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) - C++

30.09.2011, 11:56. Просмотров 9396. Ответов 9
Метки нет (Все метки)

Добрый день.

Решаю такую задачку:
"Написать программу с использованием функции, определяющей из двух введённых чисел то,
которое имеет максимальную сумму цифр. Реализовать рекурсивный вариант решения такой задачи."

Я написал так:
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
#include <iostream>
#include <conio.h> 
using namespace std;
int numerals(int); //Прототип функции
int Sum=0;
int main() 
{       
    int x, y, Sum_x, Sum_y;
    cout<<"Vvedite dva chisla x u y"<<endl<<"x="; 
    cin>>x; 
    cout<<"y=";
    cin>>y;
    Sum_x=numerals(x); //Возвращает сумму цифр числа x
    Sum_y=numerals(y);
    if (Sum_x > Sum_y) cout<<x;
    if (Sum_x < Sum_y) cout<<y;
    if (Sum_x == Sum_y) cout<<"Summa chifr chisel x u y ravni";     
    cout<<endl; 
    getch();  //Задерживает экран. Всё работает и без него
    return 0; //Завершает программу
}
 
int numerals(int Number); //Описание функции
{
    Sum+=Number%10;
    Number=Number/10;
    if (Number==0) return Sum;
    numerals(Number);
}
При компиляции в окне Вывод сообщение:

"1>------ Построение начато: проект: 15_Max_summa_chifr, Конфигурация: Debug Win32 ------
1>Компиляция...
1>15_Max_summa_chifr.cpp
1>d:\my documents\программирование_информатика\c++\15_max_summa_chifr\15_max_summa_chifr.cpp(41) : warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1> c:\program files (x86)\microsoft visual studio 9.0\vc\include\conio.h(145): см. объявление 'getch'
1>d:\my documents\программирование_информатика\c++\15_max_summa_chifr\15_max_summa_chifr.cpp(46) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>Журнал построения был сохранен в "file://d:\My documents\Программирование_Информатика\C++\15_Max_summa_chifr\Debug\BuildLog.htm"
1>15_Max_summa_chifr - ошибок 1, предупреждений 1
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 =========="

Как я понимаю, сообщение об ошибке вот это:
"error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)"

Вообще не понял, что это значит. Подскажите, пожалуйста кто-нибудь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.09.2011, 11:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) (C++):

error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) - C++
Добрый день,помогите пожалуйста разобраться почему не работает код.Заранее спасибо. #include &lt;stdio.h&gt; #include &lt;iostream&gt; int Add...

error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) - C++
В чем проблема? вот программа #include &lt;iostream&gt; using namespace std; { class Program; static void Main() ...

Error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) - C++
Подскажите где ошибка в коде. Спасибо. // labrab2.5.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; ...

Error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) - C++
Привіт усім. Перший раз пишу програму. Допоможіть, будь ласка. Ввела таке: int main (); { var a,b,c:integer; а програма...

Ошибка error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) - C++
Название говорит само за себя. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int main() { const int N =...

Ошибка 1error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа) - C++
есть 2 варианта программы и оба не работают выдают &quot;Ошибка 1error C2447: {: отсутствует заголовок функции (возможно, используется...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
-=ЮрА=-
Заблокирован
Автор FAQ
30.09.2011, 12:43 #2
Цитата Сообщение от Alex Z Посмотреть сообщение
Sum+=Number%10
Sum вначале нулю нужно положить
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
30.09.2011, 12:46 #3
Цитата Сообщение от Alex Z Посмотреть сообщение
C++
1
2
3
4
5
6
7
int numerals(int Number); //Описание функции
{
* * * * Sum+=Number%10;
* * * * Number=Number/10;
* * * * if (Number==0) return Sum;
* * * * numerals(Number);
}
точка с запятой лишние
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.09.2011, 12:50 #4
И если вы с помощью рекурсии сумму вычисляете, то так можно:

C++
1
2
3
4
long Sum(long n)
{
   return n ? n%10 + Sum(n/10) : 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
30.09.2011, 12:54 #5
Вобщем вот на плюсах(я подправил + теперь в программе возможен многократный ввод чисел)
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
#include <iostream>
#include <conio.h> 
using namespace std;
 
int numerals(int); //Прототип функции
 
int main() 
{       
    int x, y, Sum_x, Sum_y;
    do
    {
        std::cout<<"Vvedite dva chisla x u y"<<endl; 
        std::cout<<"x = ";std::cin>>x; 
        std::cout<<"y = ";std::cin>>y;
        Sum_x = numerals(x); 
        Sum_y = numerals(y);
        if (Sum_x > Sum_y) 
            std::cout<<x;
        if (Sum_x < Sum_y) 
            std::cout<<y;
        if (Sum_x == Sum_y) 
            std::cout<<"Summa chifr chisel x u y ravni";             
        std::cout<<"\r\nPress \'y\' for new input\r\n";  
    }
    while(getch() == 'y');
        return 0; //Завершает программу
}
 
int numerals(int Number) //Описание функции
{
    int Sum = Number%10;//в Sum 1-ую цифру числа
    if(0 < (Number /= 10))
        Sum += numerals(Number);//Рекурсия
    return Sum;
}
Vvedite dva chisla x u y
x = 1589
y = 758
1589
Press 'y' for new input
Vvedite dva chisla x u y
x = 758
y = 993
993
Press 'y' for new input

Добавлено через 1 минуту
Цитата Сообщение от Alex Z Посмотреть сообщение
int numerals(int Number); //Описание функции
{
* * * * Sum+=Number%10;
- основная ошибка была здесь после заголовка функции в её прототипе шёл знак ; - его не должно быть
Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.09.2011, 12:55 #6
Тогда стоит заменить
if(0 < (Number /= 10))
на
if(0 != (Number /= 10))
либо просто
if(Number /= 10)
-=ЮрА=-
Заблокирован
Автор FAQ
30.09.2011, 13:00 #7
кроме того
Цитата Сообщение от Alex Z Посмотреть сообщение
int Sum=0;
- была глобальной, поэтому здесь

Цитата Сообщение от Alex Z Посмотреть сообщение
int numerals(int Number); //Описание функции
{
* * * * Sum+=Number%10;
- шло накопление суммы, 2-е вводимое число всегда было больше 1-го не зависимо от того большшая ли сумма цифр в нём или же нет

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

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение
Тогда стоит заменить
if(0 < (Number /= 10))
на
if(0 != (Number /= 10))
либо просто
if(Number /= 10)
- думаю ТС такая запись будет сложней для понимания, поэтому привёл данную в после 5 реализацию

Thinker
Эксперт C++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
30.09.2011, 13:04 #8
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

- думаю ТС такая запись будет сложней для понимания, поэтому привёл данную в после 5 реализацию

Что ж, тогда отрицательные числа выпадут из рассмотрения.
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
01.10.2011, 09:02  [ТС] #9
Всем спасибо. Понял. Точка с запятой не нужна после заголовка функции. Теперь работает.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
шло накопление суммы, 2-е вводимое число всегда было больше 1-го не зависимо от того большшая ли сумма цифр в нём или же нет
- да, точно! Я даже и не заметил это. Всё, спасибо, исправил.
Brahmastra
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 8
01.08.2013, 17:31 #10
идентичная ошибка, спасибо за внимательность!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.08.2013, 17:31
Привет! Вот еще темы с ответами:

отсутствует заголовок функции (возможно, используется формальный список старого типа) - C++
Здраствуйте...... собственно надо решить функцию...с выдачей резтов в два столбца... писал так #include &lt;conio.h&gt; #include...

Error C2447: {: отсутствует заголовок функции - C++
Помогите, пожалуйста...:cry: #include &quot;stdafx.h&quot; #include&lt;fstream&gt; #include&lt;math.h&gt; using namespace std; double...

Ошибка 2 error C2447: {: отсутствует заголовок функции. Как исправить?? - C++
помогите пожалуста найти ошибку. #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include&lt;conio.h&gt; void main() { int a,i,j,b,s; ...

Ошибка error C2447: {: отсутствует заголовок функции. Как исправить?? - C++
Подскажите, пожалуйста, как исправить? #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; const int maxV = 10000; ...


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

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

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