Хорошо, поэтому у меня здесь небольшая проблема. Не против комментариев в коде, который они там для меня.Бесконечный цикл: почему это так бесконечно
моя проблема есть в функции. Я хочу, чтобы это проверилось, чтобы снова убедиться в [0] = y или n. И если он не зацикливается до тех пор, пока я не введу правильное число.
Теперь то, что он делает:. Он не зацикливается вокруг конца не матер, что я положил в
ли я что-то пропустил я уверен, что он сделал.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <cstdio>
//functions called
float wages_loop();
//start main
int main(void)
{
char status[10], another[10];
char buffer[80];
float wages, other_income, interest, dividends, test;
int dependents;
int single_acc = 0, mj_acc = 0, ms_acc = 0, sh_acc = 0;
printf("Would you like to start: ");
gets_s(another);
while (another[0] = 'y')
{
//printf("What is your Status: ");
//gets_s(status);
wages = wages_loop();
//printf("\n How much in Other Income. ");
//gets_s(buffer);
//other_income = atof(buffer);
//printf("\n How much in interest. ");
//gets_s(buffer);
//interest = atof(buffer);
//printf("\n How much in Dividends. ");
//gets_s(buffer);
//dividends = atof(buffer);
//printf("\n How many Dependents. ");
//gets_s(buffer);
//dependents = atoi(buffer);
printf("\n\n\t\t Your wage is: %.2f \n", wages);
system("pause");
} //end loop
printf("\n\n\t\t\t Number of Singles filleing: %i \n", single_acc);
return 0;
}//end main
float wages_loop()
{
char again[10];
char buffer[80];
float wages, total_wages = 0;
printf("\n How much in Wages. ");
gets_s(buffer);
wages = atof(buffer);
total_wages = wages + total_wages;
printf("\n Do you have any more wages. (y or n)");
gets_s(again);
if (again[0] != 'y' || 'n')
{
while (again[0] != 'y' || 'n')
{
printf("\n\n INCORRCT ANSWER. \n\n");
printf("\n Do you have any more wages. (y or n)");
gets_s(again);
}
}
while (again[0] = 'y')
{
printf("\n Enter Wages: ");
gets_s(buffer);
wages = atof(buffer);
total_wages = wages + total_wages;
printf("\n Do you have any more wages. ");
gets_s(again);
}
return total_wages;
}
Typo, вы использовали назначение ('='), должно было использовать равенство ('=='). –
Маленький. Воспроизводимые. Прецедент. –
Поднимите предупреждения своего компилятора, и он точно скажет вам, что случилось. – chris