В языке Си почему-то не работают вложеннные функции, почему - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вот код, вывода информации должно быть больше, но не работают вложенные вызовы функции.
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 
/* 
 * File:   main.c
 * Author: IT
 *
 * Created on 21 декабря 2017 г., 16:19
 */
 
/*
 * 
 */
#include <stdio.h>
#include <Windows.h>
 
int amount = 0;
int quantity = 0;
int cent25 = 25;//номинал монеты
int cent10 = 10;//номинал монеты
int cent5 = 5;//номинал монеты
int cent1 = 1;//номинал монеты
int sum = 0; //общее количество монет
int cent = 0;
 
void printQuantity(int quantity, int cent ,int amount); //объ¤вл¤ем функцию вывода на печать
void printQuantity(int quantity, int cent, int amount) // создаем функцию
{
    if(cent < amount)
    printf("\nВам нужно выдать %d монет по %d центов, осталось %d центов!\n", quantity , cent, amount );
}
 
void quantityCoin25(float s, int cent, int cent25); //объ¤вл¤ем функцию подсчета сдачи, если сумма превышает 25 центов
void quantityCoin25(float s, int cent, int cent25 ) //создаем функцию подсчета сдачи, если сумма превышает 25 центов
{
    if(cent > 25) // 1-й блок if
    {
        if(cent % 25 == 0)
        {
            // определ¤ем количество монет по 25 центов из указанной суммы
            quantity = cent / 25;
            amount = cent % 25; // находим остаток
            printQuantity(quantity , cent25 , amount); //вызов функции дл¤ печати промежуточного результата.
            sum = quantity;
        }
        else if(cent % 25 != 0)
        {
            for(amount = cent % 25; amount > 0;)
            {
 
                if(cent >=25)
                {
                    // определ¤ем количество монет по 25 центов из указанной суммы
                    quantity = cent / 25;
                    sum +=  quantity;
                    /** amount = cent % 25 - вычисл¤етс¤ при первой итерации,
                     * остаток от делени¤ (остаток количества суммы дл¤ выдачи)
                     * */
                    printQuantity(quantity, cent25, amount);
                }
 
                if (cent25 > amount && amount  >= cent10)
                {
                    // определ¤ем количество монет по 10 центов из указанной суммы
                    quantity = amount / 10;
                    amount = amount % 10; //находим остаток от делени¤ (остаток количества суммы дл¤ выдачи)
                    printQuantity(quantity , cent10 , amount);
                    sum +=  quantity;
                }
                if (cent10 > amount && amount >= cent5)
                {
                    // определ¤ем количество монет по 5 центов из указанной суммы
                    quantity = amount / 5;
                    amount = amount % 5;//находим остаток от делени¤ (остаток количества суммы дл¤ выдачи)
                    printQuantity(quantity , cent5 , amount);
                    sum += quantity;
                }
                if ( cent5 > amount && amount > 0)
                {
                    // определ¤ем количество монет по 1 центов из указанной суммы
                    quantity = amount; //(остаток количества суммы дл¤ выдачи)
                    amount = 0; //обнул¤ем счетчик дл¤ услови¤ цикла for, чтобы оствновить цикл
                    printQuantity(quantity , cent1 , amount);
                    sum += quantity;
                }
            }
            printf("\nВам нужно выдать %d  монет.\n", sum );
        }
    }
}
 
int main() {
        printf("Введите сумму сдачи (в качестве разделител¤ разр¤дов используйте '.')\n\n" );
    float s;
    s = 10.41;
    while (s < 0)
    {
        printf("\nВводимое число должно быть положительным\n" );
        printf("\nВведите сумму сдачи\n" );
        s = 10.41;
    }
    printf("\nВы ввели %.2f долларов\n",s );
 
    //переведем в центы, 100 центов в 1 долларе
    cent = s * 100;
    printf("\nВам нужно выдать %d центов \n", cent );
 
    quantityCoin25(s,cent,cent25);
    
}

Решение задачи: «В языке Си почему-то не работают вложеннные функции, почему»

textual
Листинг программы
quantity = amount; //(остаток количества суммы дл¤ выдачи)
amount = 0; //обнул¤ем счетчик дл¤ услови¤ цикла for, чтобы оствновить цикл
printQuantity(quantity , cent1 , amount);

Объяснение кода листинга программы

  1. quantity = amount; - присваивает переменной quantity значение переменной amount.
  2. amount = 0; - обнуляет счетчик amount для условия цикла for, чтобы остановить цикл.
  3. printQuantity(quantity , cent1 , amount); - вызывает функцию printQuantity с передачей значений переменных quantity, cent1 и amount в качестве аргументов.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.923 из 5