При типе данных char c_flag[]
условие c_flag == "y"
, скорее всего, никогда не будет выполнено, поскольку вы сравниваете два (разных) указателя значений, а не их содержимое.
Использование std::string c_flag
вместо этого, и, по крайней мере, ваши условия должны работать так, как ожидается.
Вы также можете написать
char c_flag[] = "y";
...
if (strcmp(c_flag,"y")==0) ...
, но я бы предпочел вариант std::string
по следующей причине: с char c_flag[] = "y"
, вы выделяете массив размером 2 (включая символ завершения строки);С cin >> c_flag
, если вы введете более одного символа, вы превысите длину массива и получите неопределенное поведение.С std::string
, напротив, переменная будет «расти» при необходимости.