Я хочу найти максимальное число среди студентов, данные уже приведены с использованием указателя и структуры из десяти студентов.
Моя программа дает неправильный ответ.
Я новичок в программировании, может кто-нибудь сказать мне, что не так с этой программой?
#include <stdio.h>
struct student
{
char name[10];
int rollno;
int DS_marks;
int machine_marks;
int ADE_marks;
int signal_system_marks;
int math_marks;
};
int main()
{
int SIZE;
struct student st[] = {
{ 'ali', 3, 89, 76, 65, 45, 90},
{ 'ma', 9, 87, 67, 90, 54, 45},
{ 'la', 6, 78, 65, 43, 29, 342}
};
// student structure pointer variable
struct student *ptr;
ptr = &st;
SIZE = sizeof(st) / 34;
if (SIZE == 0)
{
printf("there is no student record");
}
else
{
int max = maximum(ptr, SIZE);
printf("%d", max);
}
return 0;
}
int maximum(struct student *ptr, int SIZE)
{
int b, i;
printf("press number for subject\n ");
printf("press 1 for DS:\n ");
printf("press 2 for machine:\n ");
printf("press 3 for ADE:\n ");
printf("press 4 for signal system:\n ");
printf("press 5 for math:\n ");
scanf("%d", &b);
switch (b)
{
int maximum = 0;
case 1:
{
for (i = 0; i < SIZE; i++)
{
if ((*ptr).DS_marks > maximum)
{
maximum = (*ptr).DS_marks;
}
++ptr;
}
break;
}
case 2:
{
for (i = 0; i < SIZE; i++)
{
if ((*ptr).DS_marks > maximum)
{
maximum =(*ptr).machine_marks;
}
++ptr;
}
break;
}
case 3:
{
for (i = 0; i < SIZE; i++)
{
if ((*ptr).ADE_marks > maximum)
{
maximum =(*ptr).ADE_marks;
}
++ptr;
}
break;
}
case 4:
{
for (i = 0; i < SIZE; i++)
{
if ((*ptr).signal_system_marks > maximum)
{
maximum =(*ptr).signal_system_marks;
}
++ptr;
}
break;
}
case 5:
{
for (i = 0; i < SIZE; i++)
{
if ((*ptr).math_marks > maximum)
{
maximum =(*ptr).math_marks;
}
++ptr;
}
break;
}
default:
{
printf("you have pressed wrong number");
break;
}
}
return maximum;
}