, Я хочу немного продвинуть эту программу? . Предложения приветствуются
Это программа на языке c, которая вводит число и сообщает, из каких нот она состоит. Я хочу сделать это заранее, например, если я ввожу 300, она должна спросить, хотите ли вы в 100, 50, 20, 10, 5. , 2с, 1с. Я хочу спросить, какую функцию мне следует использовать для выполнения этой задачи и как? и я также хочу заменить тип данных массивом, пожалуйста, расскажите мне, как это сделать? и как я могу встроить c grpahics в мою программу?
#include<stdio.h>
#include<conio.h>
int main()
{
long amount;
long note5000, note1000, note500, note100, note50, note20, note10, coin5, coin2, coin1;
clrscr();
note5000 = note1000 = note500 = note100 = note50 = note20 = note10 = coin5 = coin2 = coin1 = 0;
printf("Enter the amount: ");
scanf("%ld", &amount);
if(amount >= 5000)
{
note5000 = amount/5000;
amount -= note5000 * 5000;
}
if(amount >= 1000)
{
note1000 = amount/1000;
amount -= note1000 * 1000;
}
if(amount >= 500)
{
note500 = amount/500;
amount -= note500 * 500;
}
if(amount >= 100)
{
note100 = amount/100;
amount -= note100 * 100;
}
if(amount >= 50)
{
note50 = amount/50;
amount -= note50 * 50;
}
if(amount >= 20)
{
note20 = amount/20;
amount -= note20 * 20;
}
if(amount >= 10)
{
note10 = amount/10;
amount -= note10 * 10;
}
if(amount >= 5)
{
coin5 = amount/5;
amount -=coin5 * 5;
}
if(amount >= 2)
{
coin2 = amount/2;
amount -=coin2 * 2;
}
if(amount >= 1)
{
coin1 = amount;
}
printf("Total number of notes = \n");
textcolor(GREEN);
cprintf("5000=%ld\r\n", note5000);
textcolor(MAGENTA);
cprintf("1000=%ld\r\n", note1000);
textcolor(MAGENTA);
cprintf("500=%ld\r\n", note500);
textcolor(MAGENTA);
cprintf("100=%ld\r\n", note100);
textcolor(MAGENTA);
cprintf("50=%ld\r\n", note50);
textcolor(MAGENTA);
cprintf("20=%ld\r\n", note20);
textcolor(MAGENTA);
cprintf("10=%ld\r\n", note10);
textcolor(MAGENTA);
cprintf("5=%ld\r\n", coin5);
textcolor(MAGENTA);
cprintf("2=%ld\r\n", coin2);
textcolor(MAGENTA);
cprintf("1=%ld\r\n", coin1);
getch();
return 0;
}
1 ответ
Кажется, ваша программа предназначена только для положительного ввода. Итак, вы можете подумать об использовании
unsigned long
как тип, чтобы выразить этот факт уже в коде. В противном случае вы можете захотеть добавить обработку и для отрицательного ввода. В любом случае вы можете определять массивы следующим образом:
long array[desired_size];
В вашем случае вы также можете связать предполагаемое значение с массивом. Итак, вы можете предпочесть структуру для:
struct NoteOrCoin
{
unsigned long value;
unsigned long count;
};
Затем вы можете создать массив следующим образом:
struct NoteOrCoin array[] = {
{ 5000, 0 },
{ 1000, 0 },
/* other notes and coins */
};
Обратите внимание, что я опустил здесь размер массива, он будет выведен из инициализатора.
Теперь вы можете легко выполнять итерацию цикла for по массиву - что, как я полагаю, вы действительно намереваетесь ...
Боковое примечание: включение цвета в структуру позволяет также выводить в цикле:
struct NoteOrCoin
{
unsigned long value;
unsigned long count;
char const* color; // or whatever the type for your color constants is
// (I assumed ANSI escape codes)
};
struct NoteOrCoin array[] = { { 5000, 0, GREEN }, /* other notes and coins */ };