У меня есть программа, которая просит пользователя выбрать add class/ drop class / print invoice
. Классы сохраняются в виде массивов. У меня проблема с инвойсом. У меня есть две функции для перечисления course name
и course credits
, которые затем передаются в print invoice function
.
Однако, когда пользователь вводит более одного класса, первый класс имеет имя строки соответствующего класса и кредиты в счете. Следующие классы являются точным номером курса array
, но копируют те же кредиты и название класса. Я пробовал разные решения, заставляя функции возвращать указатель, но безуспешно. Любой совет будет полезен, спасибо!
Пробовал с функцией печати / возврата указателя
void printInvoice(int crn[], int idNumber){
int i;
printf("\n\t\tFee Invoice Prepared for Student:\n\t\t%d", idNumber);
for ( i=1; i<MAX_CLASS ; i++){
if ( crn[i] != 0 ){
printf ("\n\t\t%d\t%s\t\t%d", crn[i], printPrefix(crn), getCredits(crn) );
}
}
}
int getCredits(int crn[]){
int i;
for(i = 1; i < MAX_CLASS; i++){
switch(crn[i]){
case 4587: return 4;
break;
case 4599: return 3;
break;
case 8997: return 1;
break;
case 9696: return 3;
break;
case 7895: return 2;
break;
case 9658: return 3;
break;
case 4287: return 4;
break;
case 9599: return 3;
break;
case 8927: return 1;
break;
case 7696: return 4;
break;
case 7890: return 3;
break;
case 9008: return 5;
break;
}
}
}
char* printPrefix(int crn[]){
int i;
for(i = 1; i < MAX_CLASS; i++){
switch(crn[i]){
case 4587: return "MAT 236";
case 4599: return "COP 220";
case 8997: return "GOL 124";
case 9696: return "COP 100";
case 7895: return "MNT 125";
case 9658: return "OPT 120";
case 4287: return "MAT 836";
case 9599: return "COP 220";
case 8927: return "GOM 124";
case 7696: return "COT 100";
case 7890: return "MOT 125";
case 9008: return "OPT 520";
}
}
}
Ожидайте название соответствующего класса и номер кредита.
Фактические результаты - первый введенный массив (курс), копии их имени класса и номера кредита для следующих массивов