Я пишу банковскую программу для назначения. Я сделал базовую программу, которая не имеет функций. Теперь мне нужно добавить две функции для замены частей кода. Я выбираю замену пользовательских циклов ввода для сумм пополнения и снятия. Я могу заставить функцию нормально работать с запросом номера, но когда я пытаюсь использовать цикл, запрашивающий суммы депозита, он не работает должным образом. Я думаю, что моя ограничивающая переменная цикла не переносится из-за того, что она поступает из другой функции. Есть ли способ получить эту ограничивающую переменную. Я включил части кода, который задействован.
int deposit_message (void)
{
int d;
do
{
printf("\nEnter the number of deposits (0-5): ");
scanf("%i", &d);
/* Define rules for invalid answers */
/* -------------------------------- */
if( d < 0 || d > 5)
{
printf("*** Invalid number of deposits, please re-enter.");
}
}while( d < 0 || d > 5); /* end of loop */
return d;
} /* end of function */
/* Prompt user for positive deposits, if invalid re-prompt. */
/* -------------------------------------------------------- */
for( i=0; i < d; i++)
{
/* Create array for deposits */
do
{
printf("Enter the amount of deposit #%i: ", i +1);
scanf("%f", &deposit[i]);
/* Define rules for invalid answers */
/* -------------------------------- */
if(deposit[i] < 0.00)
{
printf("*** Deposit amount must be greater than zero, please re-enter.\n");
}
}while(deposit[i] < 0.00);
Revised code after attempting to pass the variable d.
void deposit_message (int d)
{
do
{
printf("\nEnter the number of deposits (0-5): ");
scanf("%i", &d);
/* Define rules for invalid answers */
/* -------------------------------- */
if( d < 0 || d > 5)
{
printf("*** Invalid number of deposits, please re-enter.");
}
}while( d < 0 || d > 5); /* end of loop */
return d;
} /* end of function */
/* Prompt user for number of deposits between 0 and 5 with function, if invalid re-prompt with loop. */
/* ----------------------------------------------------------------------------------- */
deposit_message(&d);
/* Prompt user for positive deposits, if invalid re-prompt. */
/* -------------------------------------------------------- */
for( i=0; i < d; i++)
{
/* Create array for deposits */
do
{
printf("Enter the amount of deposit #%i: ", i +1);
scanf("%f", &deposit[i]);
/* Define rules for invalid answers */
/* -------------------------------- */
if(deposit[i] < 0.00)
{
printf("*** Deposit amount must be greater than zero, please re-enter.\n");
}
}while(deposit[i] < 0.00);
Цикл должен запрашивать сумму депозита X раз в зависимости от количества депозитов, выбранных пользователем. При использовании он либо не остановится, либо просто один раз. (После попытки его пересмотреть цикл не останавливается.