В языке Си почему-то не работают вложеннные функции, почему - 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);
Объяснение кода листинга программы
quantity = amount;
- присваивает переменнойquantity
значение переменнойamount
.amount = 0;
- обнуляет счетчикamount
для условия циклаfor
, чтобы остановить цикл.printQuantity(quantity , cent1 , amount);
- вызывает функциюprintQuantity
с передачей значений переменныхquantity
,cent1
иamount
в качестве аргументов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д