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

не работает функция-счётчик - C++

Восстановить пароль Регистрация
 
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
13.12.2012, 19:50     не работает функция-счётчик #1
Функция должна возвращать целое значение, уменьшающееся на 1 при каждом вызове. Начальное значение равно 10
C++
1
2
3
4
5
6
7
8
#include "stdafx.h"
int main()
{
    static int a=10;
    a--;
    printf("%d \n",a);
    return a;
}
При первом запуске на экран выводит 9,но при повторном запуске 8 уже не пишет,а всё также остаётся 9,почему так происходит?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
13.12.2012, 19:53     не работает функция-счётчик #2
Потому что main это главная функция, с ней так не прокатывает.
DarkSkazochnik
 Аватар для DarkSkazochnik
3 / 3 / 0
Регистрация: 17.11.2012
Сообщений: 39
13.12.2012, 19:54     не работает функция-счётчик #3
Вам нужно просто организовать цикл. Сейчас у вас программа работает так:

1) а получает значение 10
2) а уменьшается на 1
3) выводите а на экран
4) возвращаете значение а в функцию.

Решение:

C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
int main()
{
   static int a;
 
   for (a = 10; a > 0; a--)
   {
      printf("%d \n",a);
   }
   return a;
}
Ну а вообще да, желательно бы вместо int main использовать void main (в таком случае уберите return), всё-таки тело программы, как никак...
David Sylva
 Аватар для David Sylva
1280 / 942 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
13.12.2012, 19:55     не работает функция-счётчик #4
marina11 не путайте, обычную функцию и главную функцию, какое у вас задание?
ValeryS
Модератор
6374 / 4840 / 441
Регистрация: 14.02.2011
Сообщений: 16,040
13.12.2012, 20:01     не работает функция-счётчик #5
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
void main (в таком случае уберите return),
Ща насоветуешь
Цитата Сообщение от marina11 Посмотреть сообщение
При первом запуске на экран выводит 9,но при повторном запуске 8 уже не пишет,а всё также остаётся 9,почему так происходит?
потому что
ты запускаешь программу
система выдает ей память
программа инициализирует
C++
1
static int a=10;
потом уменьшает на единицу и выводит на экран
потом заканчивает работу
система забирает всю память что отдала и очищает её
и при следующем запуске начинается все заного
система ничего про твой static не знает
static действует только в пределах программы

если тебе нужно сохранять значения (это типа триал версия?)
то сохраняй в файл или в реестр
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
13.12.2012, 20:37  [ТС]     не работает функция-счётчик #6
Цитата Сообщение от David Sylva Посмотреть сообщение
marina11 не путайте, обычную функцию и главную функцию, какое у вас задание?
Вот полное задание
Возвращает целое значение, уменьшающееся на 1 при каждом вызове. Начальное значение равно 10. При достижении значения, равного нулю, счётчик должен автоматически сбрасываться, и в следующий раз, при вызове этой функции, она должна вернуть 10.

Добавлено через 5 минут
Цитата Сообщение от DarkSkazochnik Посмотреть сообщение
Вам нужно просто организовать цикл. Сейчас у вас программа работает так:

1) а получает значение 10
2) а уменьшается на 1
3) выводите а на экран
4) возвращаете значение а в функцию.

Решение:

C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
int main()
{
   static int a;
 
   for (a = 10; a > 0; a--)
   {
      printf("%d \n",a);
   }
   return a;
}
Ну а вообще да, желательно бы вместо int main использовать void main (в таком случае уберите return), всё-таки тело программы, как никак...
Мне такое не подходит,нужно чтобы из переменной вычиталась единица - результат вывелся на экран,потом это значение переместилось в начало программы и дальше по алгоритму до 0.
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
15.12.2012, 22:48  [ТС]     не работает функция-счётчик #7
Нужно написать функцию-счётчик, используя только статические и локальные переменные. Функция должна возвращать целое значение, уменьшающееся на 1 при каждом вызове. Начальное значение равно 10. При достижении значения, равного нулю, счётчик должен автоматически сбрасываться, и в следующий раз, при вызове этой функции, она должна вернуть 10.
Начала писать программу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
int main()
{
int a;
for (a=0;a<15;a++)
{
    printf ("a=%d\n",Counter());
}
getch();
return a;
}
 
int Counter()
{
    
}
Не знаю,как описать сам счётчик в функции Counter, помогите пожалуйста!
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
15.12.2012, 22:59     не работает функция-счётчик #8
C++
1
2
3
4
5
static int cnt = 10;
cnt--;
if (cnt == 0)
    cnt = 10;
return cnt;
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
15.12.2012, 23:01     не работает функция-счётчик #9
C++
1
2
3
4
5
6
7
8
9
int Counter()
{
    static int n = 0;
    n++;
 
    if (n == 12) n = 1;
 
    return 11 - n;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 23:13     не работает функция-счётчик
Еще ссылки по теме:

Не работает функция! C++
Не работает функция gets() C++
C++ Не работает функция

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

Или воспользуйтесь поиском по форуму:
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
15.12.2012, 23:13  [ТС]     не работает функция-счётчик #10
Спасибо!
Yandex
Объявления
15.12.2012, 23:13     не работает функция-счётчик
Ответ Создать тему
Опции темы

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