Как сделать счетчик в с
Перейти к содержимому

Как сделать счетчик в с

  • автор:

Как сделать счетчик в с

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

Сообщений: 8

Счетчики / С++ для начинающих

Здравствуйте! Дана задача которая выводит часто встречаемое слово в тексте: как в данном коде сделать счетчик количества появления слова в тексте и убрать ограничение на вводимый текст.

#include using namespace std; void mostRecent(char *, char *); // прототип функции поиска часто встречающегося слова int main(int argc, char* argv[]) < setlocale(LC_ALL, "rus"); // установка локалии cout void mostRecent(char * text, char *word) // функция поиска часто встречающегося слова < int words_counter = 0; // количество слов в тексте char *arrayPtr[1000]; //массив указателей на строки, в которых будут храниться слова из текста arrayPtr[0] = strtok(text, " "); // нулевому указателю присваеваем первое слово // подсчёт количества слов во введённом тексте while (arrayPtr[words_counter] != NULL) // пока в тексте есть слова < words_counter++; // инкремент счётчика слов arrayPtr[words_counter] = strtok(NULL, " "); // очередное слово сохраняем в массиве >bool first_iter = true, // флаг определяющий этап первой итерации go = false; int max_number1 = 0, // количество слов max_number2 = 0, // количество слов max_word = 0, // индекс самого часто встречающегося слова flag = 0; // флаг, подсчёта двух итераций int index1, index2; for (int counter1 = 0; counter1 < (words_counter - 1); counter1++) // перебор слов, начиная с первого и заканчивая предпоследним < flag++; // инкремент итераций for (int counter2 = counter1 + 1; counter2 < words_counter; counter2++) // перебор слов, начиная со второго и заканчивая предпоследним < if (strcmp(arrayPtr[counter1], arrayPtr[counter2]) == 0) // сравниваем два слова if (first_iter) // если первая итерация (то есть сюда заходим один раз) < max_number1++; // инкремент переменной, подсчитывающей количество одинаковых слов first_iter = false; // меняем условие оператора if index1 = counter1; >else < max_number2++; // инкремент переменной, подсчитывающей количество одинаковых слов index2 = counter1; >> if (flag == 2 || go) // если прошли две итерации, или поэлементный проход разрешён < if (max_number1 >= max_number2) // если количество первого слова больше количества второго слова < max_word = index1; // присваиваем индекс самого часто повторяющегося слова >else < max_word = index2; max_number1 = max_number2; >// присваиваем индекс самого часто повторяющегося слова и количество появления второго слова присваиваем переменной max_number1 flag = 0; // обнуляем счётчик итераций go = true; // разрешить поэлементный проход > max_number2 = 0; // обнуляем накопленное количество появления второго слова > strcpy(word, arrayPtr[max_word]); // возвращаем результат поиска самого часто встречающегося слова >

Организация счётчика вызова функции

Получила задание (С++): «Продемонстрируйте работу со статическими переменными. Один из возможных вариантов — организация счетчика вызовов функции». Это одно из заданий по теме указатели, я не понимаю как связать это задание с темой, учитывая то, что передачу параметров по ссылке мы ещё не учили. Возможно ли как-то связать тему с кодом? Правильно ли я поняла задание? В задании сказано, что это «один из вариантов». Как ещё можно выполнить задачу?

void initialStaticVar() < static int s_var = 0; s_var++; cout int main()

Отслеживать
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
задан 10 янв 2021 в 8:35
45 7 7 бронзовых знаков

Вытащите счетчик из функции (в тот же файл) и добавьте функцию, возвращающую его значение. static int foo_cnt = 0; int get_foo_cnt() void foo ()

10 янв 2021 в 8:43

Связать тему с указателями можно. Переменные храняться в трёх областях памяти. Статической, динамической и в стеке.

11 янв 2021 в 8:28

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Статические переменные создаются при старте программы и оканчивает свою жизнь при завершении.

Есть много понятий переменных с обозначением статические.

  1. Глобальная переменная без обозначения static.
  2. Глобальная переменная с обозначением static.
  3. Локальная переменная внутри функции.
  4. Глобальная переменная внутри пространства имён.
  5. Статическая переменная внутри объявления класса.

Глобальная переменная без обозначения static

extern int i ; 
int i = 0 ; 
# include .. i = i + 1 ; 

к переменной i можно будет обратиться если в её предварительно объявить как extern (может находиться в другом файле).

Глобальная переменная с обозначением static

static int i = 1 ; 
static double i = 2.0 ; 

Здесь обозначение static обязывает уменьшать область видимости переменной i только внутри .cpp файла. И в разных файлах эта переменная будет иметь разные значения или даже разные типы.

Локальная переменная внутри функции

int function1(int i) < static int sum = 0 ; sum += i ; return sum ; >double function2(double i)

Здесь переменных sum в программе две штуки. Но область видимости только в своей функции. Присваивание нулю этим переменным будет происходить только один раз при первом вызове функции. А если эти функции не будут бызваны вообще, то и эти переменные не будут инициилизированы никогда.

Эта переменная храниться не в стеке, а в глобальном пространстве и не теряет своё значение при выходе из функции.

Глобальная переменная внутри пространства имён

namespace NS < int stat = 1 ; >namespace NS2

Здесь статические переменные имеют одинаковые имена, но имеют разные значения. К ним можно обращаться так : NS::stat , NS2::stat .

Статическая переменная внутри объявления класса

class C < public : static int sum ; >; int C :: sum = 0 ; 

Здесь переменная sum будет храниться в единственном экземпляре для всех членов класса C . И обращаться можно так-же, как если бы были объявлены в пространстве имён. Если политика разрешений класса позволяет.

Как сделать счетчик для сайта?

mlpro

mlpro

29.11.2013 19:42 6 135

6d9fd9f1d3a7.jpg

Как сделать примитивный счетчик для сайта который
был раз в 10-15 секунд прибавлял бы по 1 цифре. Т.е. как счетчик времени
только наоборот.
Пример:

Ответы на пост (7) Написать ответ

30.11.2013 01:22

Разберетесь сами?



Как сделать счетчик по документу

Как сделать счетчик по документу? Есть таблица значений СписокТоваров, колонку № скрыл, НомерСтроки1 добавил. По документу нужно установить правильную нумерацию.

Процедура ТабДокументыПриАктивизацииСтроки(Элемент) ЭлементыФормы.СписокТоваров.ОтборСтрок.СсылкаНаДокумент.Использование = Истина; ЭлементыФормы.СписокТоваров.ОтборСтрок.СсылкаНаДокумент.ВидСравнения = ВидСравнения.Равно; ЭлементыФормы.СписокТоваров.ОтборСтрок.СсылкаНаДокумент.Значение = Элемент.ТекущиеДанные.Документ; //Если (ТипЗнч(Элемент.ТекущиеДанные.Документ) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг")) Тогда ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Отметка", Истина); НайденныеСтроки = СписокТоваров.НайтиСтроки(ПараметрыОтбора); ДокументТЗ = Элемент.ТекущиеДанные.Документ; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДокументТЗ", ДокументТЗ); Запрос.УстановитьПараметр("ТабТовары", СписокТоваров.Выгрузить()); Запрос.Текст ; Тз = Новый ТаблицаЗначений; Тз = Запрос.Выполнить().Выгрузить(); Для Каждого ТекущаяСтрока Из Тз Цикл НоваяСтрока = СписокТоваров.Добавить(); Если ТекущаяСтрока.Отметка = "Истина" Тогда НоваяСтрока.Отметка = Истина; КонецЕсли; //НоваяСтрока.НомерСтроки = Ном; НоваяСтрока.СсылкаНаДокумент = ТекущаяСтрока.СсылкаНаДокумент; НоваяСтрока.Номенклатура = ТекущаяСтрока.Номенклатура; НоваяСтрока.ХарактеристикаНоменклатуры = ТекущаяСтрока.ХарактеристикаНоменклатуры; НоваяСтрока.СерияНоменклатуры = ТекущаяСтрока.СерияНоменклатуры; НоваяСтрока.ЕдиницаИзмерения = ТекущаяСтрока.ЕдиницаИзмерения; НоваяСтрока.Количество = ТекущаяСтрока.Количество; НоваяСтрока.Цена = ТекущаяСтрока.Цена; НоваяСтрока.Сумма = ТекущаяСтрока.Сумма; КонецЦикла; //КонецЕсли; КонецПроцедуры Процедура СписокТоваровНомерСтроки1ПриИзменении(Элемент) Счетчик = 0; Для каждого Стр Из СписокТоваров Цикл Счетчик=Счетчик+1; Стр.НомерСтроки1 = Счетчик; КонецЦикла; КонецПроцедуры Процедура СписокТоваровПриПолученииДанных(Элемент, ОформленияСтрок) Для Каждого офСтроки Из ОформленияСтрок Цикл офСтроки.Ячейки.НомерСтроки1.УстановитьТекст(СписокТоваров.Индекс(ОфСтроки.ДанныеСтроки)); КонецЦикла КонецПроцедуры

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *