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

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

Войти
Регистрация
Восстановить пароль
 
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
#1

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

13.12.2012, 19:50. Просмотров 560. Ответов 9
Метки нет (Все метки)

Функция должна возвращать целое значение, уменьшающееся на 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,почему так происходит?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2012, 19:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос не работает функция-счётчик (C++):

Не работает счётчик - C++
Здравствуйте. Подскажите пожалуйста почему не работает счётчик? уже всю голову сломал :cry: Выдаёт всегда значение 1, т.е видит только...

Не работает счётчик, изменяющий 2 переменных - C++
Собственно не работает второй счётчик, находящийся в функции P, а точнее под его командованием не работает переменная count. Если разнести...

Может ли переменная X использоваться как счётчик в цикле, в теле которого вычисляется заданная функция? - C++
Может ли переменная х быть параметром (управляющей переменной) в операторе цикла с параметром если в цикле вычисляется функция y=f(x) при 0...

вопрос к спецам: почему функция fputc при работе не устанавливает счётчик файла в конец? - C++
Друзья! То есть написана программка. С клавы вводится ОДИН символ и он запихивается в файл. А потом этот файл с помощью функции fread...

Функция cin.get(array, 80) работает в одной программе, но не работает в другой - C++
Добрый день. Я что то совсем запутался, одна и та же функция в одной программе работает, а в другой нет. В этой программе...

Не работает функция - C++
Добрый день. Потихоньку изучаю ООП. И столкнулся с такой проблемой: Есть два файла: 1)#include "BOOK.h" int main() { ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.12.2012, 19:53 #2
Потому что main это главная функция, с ней так не прокатывает.
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
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
13.12.2012, 19:55 #4
marina11 не путайте, обычную функцию и главную функцию, какое у вас задание?
ValeryS
Модератор
6556 / 5022 / 464
Регистрация: 14.02.2011
Сообщений: 16,763
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
430 / 365 / 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
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;
}
marina11
1 / 1 / 0
Регистрация: 15.11.2012
Сообщений: 84
15.12.2012, 23:13  [ТС] #10
Спасибо!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2012, 23:13
Привет! Вот еще темы с ответами:

Не работает функция gets() - C++
Компилятор не розпознает функцию gets(); Это пример из книги Г.Шилдта &quot;С++: базовый курс&quot;. #include&lt;iostream&gt; ...

Не работает функция - C++
// Example program #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cmath&gt; using namespace std; int main() { float x=0.2; ...

Не работает функция - C++
Не работает функция write класса Losers. Вызов происходит в 60-й строчке. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;iomanip&gt;...

Не работает функция - C++
#include &lt;iostream&gt; using namespace std; int main() { system(&quot;color 4&quot;); base(4); system(&quot;pause&quot;); return...


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

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

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