Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.09.2013, 01:28   #1
МатроскинЯ
Пользователь
 
Аватар для МатроскинЯ
 
Регистрация: 24.09.2013
Сообщений: 10
Вопрос Взял книгу "С++ для чайников"... и тем не менее проблемы с функциями

Помогите разобраться недочайнику, "работаю" в DevC++, (прошу прощения за громкие слова), столкнулся с такими проблемами как: учебник достаточно старый и написан под GNU C++, который, как оказалось, работает не всегда как Dev, начиная с #include<iostream> и дальше по списку... у меня возникла загвоздка с функциями, а именно - выдаёт ошибку, а что от меня хочет - не понимаю(((
код программы вот:
Код:
#include<stdio.h>
#include<iostream>
using namespace std;
int sumSequence(void)
{
    int accumulator=0;
    for(;;)
    {
           int cislo=0;
           cout << "Vvedi cislo:";
           cin >> cislo;
           if (cislo<0)
           {
                       break;
           }
          
          accumulator+=cislo;
                     
           return accumulator;
    } 
 int main(int arg, char* pszArgs[])
 { (*)
     int accumulatedValue;
     do
     {
         cout << "Vvedite posledovatelnost:";
         accumulatedValue=sumSequence()
         cout << "ObSumma=:" << accumulatedValue << "\n";
     } while (obsumma!=0);
     cout << "zvezdec!";
     system("pause");
     return 0;
 } (*)
ошибки пометил (*), по крайней мере он подсвечивает эти строки..
Объясните, пожалуйста, в чём я накосячил)))




___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.09.2013 в 08:23.
МатроскинЯ вне форума Ответить с цитированием
Старый 24.09.2013, 01:37   #2
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Ошибки напишите.
Код:
for(;
Незаконченная форма оператора for
Код:
int sumSequence(void)
{
int accumulator=0;
for (int smth = 0; smth == 0; smth++) // например
{
int cislo=0;
cout << "Vvedi cislo:";
cin >> cislo;
if (cislo<0)
{
break;
}

accumulator+=cislo;

return accumulator;
}
Я что-то не вижу у вас конца определения функции, т.е еще одной закрывающей скобки
int someFunc()
{
//body
} // указываем компилятору на конец области видимости ф-ции
// и на то, что здесь кончается определение ф-ции
Вот так попробуйте:
Код:
int sumSequence(void)
{
int accumulator=0;
for (int smth = 0; smth == 0; smth++) // например
{
int cislo=0;
cout << "Vvedi cislo:";
cin >> cislo;
if (cislo<0)
{
break;
}

accumulator+=cislo;

return accumulator;
}
}
Да, и еще компилятор скорее всего будер выдавать предупреждение, что отсутсвует возвращаемое значение. Оно у Вас только в цикле. Вне - нет.

Последний раз редактировалось Igor95; 24.09.2013 в 01:42.
Igor95 вне форума Ответить с цитированием
Старый 24.09.2013, 01:58   #3
МатроскинЯ
Пользователь
 
Аватар для МатроскинЯ
 
Регистрация: 24.09.2013
Сообщений: 10
По умолчанию

спасибо за помощь, но при таких изменениях опять же появляются проблемы: если исправить for по вашему примеру, он её сразу подчёркивает как ошибку, к тому же то что у неё не указаны параметры говорит о том, что цикл бесконечный, пока не выкинет в результате тела цикла ( по крайней мере как рассчитывает книга), выкинуть соответственно должно при вводе отрицательного числа.
Если же не исправлять for, а только поставить } 2 раз после return, то выделяются как ошибки следующие строки:
cout << "ObSumma=:" << accumulatedValue << "\n";
и
} while (obsumma!=0);
МатроскинЯ вне форума Ответить с цитированием
Старый 24.09.2013, 02:03   #4
МатроскинЯ
Пользователь
 
Аватар для МатроскинЯ
 
Регистрация: 24.09.2013
Сообщений: 10
По умолчанию

по поводу for - там смайл поставился не нужный, она записана как for(; ; ) без пробелов
МатроскинЯ вне форума Ответить с цитированием
Старый 24.09.2013, 08:24   #5
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Да, эти смайлы все запутали.
Igor95 вне форума Ответить с цитированием
Старый 24.09.2013, 08:25   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Матроскин, запомните, если Вы открыли операторную скобку {,
то её ОБЯЗАТЕЛЬНО надо в коде закрыть.

у Вас нет закрывающей скобки для
Цитата:
Код:
int sumSequence(void)
{
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.09.2013, 10:42   #7
МатроскинЯ
Пользователь
 
Аватар для МатроскинЯ
 
Регистрация: 24.09.2013
Сообщений: 10
По умолчанию

со скобочкой уже разобрались, я же написал, что ошибку пишет с cout:
Код:
#include<stdio.h>
#include<iostream>
using namespace std;
int sumSequence(void)
{
    int accumulator=0;
    for(;; )
    {
           int cislo=0;
           cout << "Vvedi cislo:";
           cin >> cislo;
           if (cislo<0)
           {
                       break;
           }
          
          accumulator+=cislo;
                     
           return accumulator;
    } 
}

 int main(int arg, char* pszArgs[])
 {
     int accumulatedValue;
     do
     {
         cout << "Vvedite posledovatelnost:";
         accumulatedValue=sumSequence()
         cout << "accumulatedValue=:" << accumulatedValue << "\n";   (*)
     } while (accumulatedValue!=0);
     cout << "zvezdec!";
     system("pause");
     return 0;
 }
ошибка как и в прошлый раз обозначена (*)



___________
ЕЩЁ РАЗ ПОВТОРЯЮ: Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 24.09.2013 в 11:00.
МатроскинЯ вне форума Ответить с цитированием
Старый 24.09.2013, 11:02   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Код:
accumulatedValue=sumSequence();
         cout << "accumulatedValue=:" << accumulatedValue << "\n";   (*)
точку с запятой пропустили (выделил то, что должно быть).
после КАЖДОГО оператора должна быть точка с запятой!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 24.09.2013, 11:08   #9
МатроскинЯ
Пользователь
 
Аватар для МатроскинЯ
 
Регистрация: 24.09.2013
Сообщений: 10
По умолчанию

извиняюсь, не знал про правила оформления)) спасибо, правда косяк, теперь работает)
МатроскинЯ вне форума Ответить с цитированием
Старый 24.09.2013, 14:08   #10
МатроскинЯ
Пользователь
 
Аватар для МатроскинЯ
 
Регистрация: 24.09.2013
Сообщений: 10
По умолчанию

программа запускается, но считает не корректно, не так как задумывал автор учебника, положительные значения складывает нормально, но с отрицательными выводит бредовые значения... и при вводе двух отрицательных чисел программа не закрывается...
Код:
#include<stdio.h>
#include<iostream>
using namespace std;
int sumSequence()
{
    int accumulator=0;
    for(;;)
    {
           int cislo=0;
           cout << "Vvedi cislo:";
           cin >> cislo;
           if (cislo<0)
           {
                       break;
           }
          else
          {
          accumulator=accumulator+cislo;
          }          
           return accumulator;
    } 
}

 int main(int arg, char* pszArgs[])
 {
     int accumulatedValue=0;
     do
     {
         cout << "Vvedite posledovatelnost:";
         accumulatedValue+=sumSequence();
         cout << "accumulatedValue=:" << accumulatedValue << "\n";
     } while (accumulatedValue!=0);
     cout << "zvezdec!";
     system("pause");
     return 0;
 }
подскажите в чём ошибка, заранее благодарен... суть программы должна быть: функция складывает определённую последовательность чисел, вводимых с клавиатуры, при вводе отрицательного выходит из цикла и работает дальше, сумму последовательности прибавляет к накапливаемой общей суммы. после прибавления возвращается к функции за новой суммой и т.д., до тех пор, пока не введут два отрицательных значения подряд. после должен вывести общую сумму и закончить программу...
МатроскинЯ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа функциями "ЕСЛИ", "И" и вывод текстового результата johny_03 Microsoft Office Excel 3 04.08.2014 11:01
Не могу найти книгу "Javascript для чайников" Hardander Помощь студентам 0 27.05.2013 12:28
PHP для " Чайников" swiss_made Помощь студентам 5 17.08.2008 15:46