GDB Cout двойной близко к 0

#include <iostream>
#include <string>
#define SIZE_LETTERS (254)

using namespace std;

void analyzeF(const string *input, char a, int *freq) {
for (int i = 0; i < (input)->length(); ++i) {
if ((*input)[i] == a)
++(*freq);
}
}

int main() {
int freq = 0;

string input = "53\u2021\u2021\u2020305))6*;4826)4\u2021.)4\u2021);806*;48\u2020860))85;;]8*;:\u2021*8\u202083(88)5*\u2020;46(;88*96*?;8)*\u2021(;485);5*\u20202:*\u2021(;4956*2(5*\u20144)88*;4069285);)6\u20208)4\u2021\u2021;1(\u20219;48081;8:8\u20211;48\u202085;4)485\u2020528806*81(\u20219;48;(88;4(\u2021?34;48)4\u2021;161;:188;\u2021?;";
char c;

cout << "Please enter a character to be matched: " << endl;
cin >> c;
analyzeF(&input, c, &freq);

double result = (double)freq/SIZE_LETTERS;
cout << "The frequency for " << c << " is:" << result << endl;
return 1;
}

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

Когда я выполняю программу, что бы я ни набрал для char c, выходное значение равно 0.

Однако, когда я отлаживаю его в gdb, он выдает правильный результат. например, частота для 8 составляет 0,133858.

Команда, которую я использую для создания объекта .o:

g++ -g c.cpp -o c
./c

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …