c переменных и уравнения - PullRequest
0 голосов
/ 27 мая 2020

Обновленный код и вопрос благодаря Sankalp Bhamare: обновленный код не получает ожидаемого значения в переменной twoHundredFiftyScholarship.

При использовании отладчика я вижу, что единственное неверное значение - для переменной twoHundredFiftyScholarship.

Ожидаемое значение для переменной twoHundredFiftyScholarship при вводе пробного прогона № 1 должно быть 1. Я получаю значение 3.

то же самое, что и для пробного прогона № 2 . Ожидаемое значение - 8. Я получаю 48.


Пробный прогон №1

Сколько было в фонде в прошлом году?

40000

Какая годовая процентная ставка?

2

0 Будет предоставлена ​​стипендия в размере 1000 долларов США.

Будет предоставлена ​​стипендия 1 500 долларов США.

Будут присуждены стипендии 1 250 долларов.

Пробный прогон № 2

Сколько было в фонде в прошлом году?

1200000

Каков годовой процент ставка?

1

5 Будут присуждены стипендии в размере 1000 долларов.

Будет присуждена стипендия 10 500 долларов.

8 Будут присуждены стипендии по 250 долларов. *

Ожидаемое значение переменной twoHundredFiftyScholarship при вводе пробного прогона # 2 должно быть 8. Я получаю 48.

#include <stdio.h>
#include <stdlib.h>


int main(){

    double fundAmount;
    int yearlyInterestRate;
    double yearlyInterest;
    double remainingScholarship;
    int thousandScholarships = 0;
    int fiveHundredScholarship = 0;
    int twoHundredFiftyScholarship = 0;


    printf("How much was in the fund last year?\n");
    scanf("%lf", &fundAmount);

    printf("What is the yearly percentage rate?\n");
    scanf("%d", &yearlyInterestRate);

    yearlyInterest = fundAmount*yearlyInterestRate/100.0;
    remainingScholarship = yearlyInterest;
    thousandScholarships = remainingScholarship/1000.0;
    fiveHundredScholarship = remainingScholarship/500.0;
    twoHundredFiftyScholarship = remainingScholarship/250.0;

    if(thousandScholarships > 5){
        thousandScholarships = 5;

        remainingScholarship -= thousandScholarships*1000.0;}


    if(fiveHundredScholarship > 10){
        fiveHundredScholarship = 10;

        remainingScholarship -= fiveHundredScholarship*500;}



        remainingScholarship -= twoHundredFiftyScholarship*250;



        printf("%d $1000 scholarships will be awarded.\n",thousandScholarships);
        printf("%d $500 scholarships will be awarded.\n",fiveHundredScholarship);       
        printf("%d $250 scholarships will be awarded.\n",twoHundredFiftyScholarship);



    system("pause");

    return 0;
}

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы можете реализовать это просто как:

#include <stdio.h>

int main()
{

    double fundAmount = 100350.0;
    double yearlyInterestRate = 9.0;
    double yearlyInterest = fundAmount*yearlyInterestRate/100.0;

    double remainingScholarship = yearlyInterest;

    int thousandScholarships = remainingScholarship/1000.0;
    if(thousandScholarships > 5)
        thousandScholarships = 5;

    remainingScholarship -= thousandScholarships*1000.0;

    int fiveHundredScholarship = remainingScholarship/500.0;
    if (fiveHundredScholarship > 10)
        fiveHundredScholarship = 10;

    remainingScholarship -= fiveHundredScholarship*500;
    int twoHundredFiftyScholarship = remainingScholarship/250.0;
    remainingScholarship -= twoHundredFiftyScholarship*250;

    printf("$1000 Scholarships : %d\n",thousandScholarships);
    printf("$500 Scholarships : %d\n",fiveHundredScholarship);
    printf("$250 Scholarships : %d\n",twoHundredFiftyScholarship);
    printf("Residual Amount : %lf\n",remainingScholarship);
    return 0;
}
1 голос
/ 27 мая 2020

Вопрос 1: Сколько переменных необходимо для этой задачи?

Этот вопрос не имеет смысла. Представьте, что у вас есть одна переменная, объявленная как int x;, тогда вы можете кодировать

int x1 = x;
int x2 = x*1;
int x3 = x+0;
int x4 = x|0;

, тогда все x, x1, x2, x3, x4 содержат одно и то же целочисленное значение и может использоваться взаимозаменяемо.

Представьте также, что у вас есть две переменные и код

int x= something();
int y= x+1;

, тогда (если y не будет изменен позже), вы можете заменить вхождения y на x+1.

Обязательно прочтите больше о языке программирования C (особенно Modern C) и Как отладка небольших программ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...