I'm a student who transferred late and is practically self-taught. I'm writing a grade management program for my assignment, but there's a blockage, so I'm asking you a question.
typedef struct { int num; char name[MAX_NAME]; int kor; int eng; int mat; }Student;
Student *stues; int max_student; void start(); void Run();
int main(void) { start(); Run(); free(stues); return 0; }
void start() { printf("Enter the number of students:"); scanf_s("%d", &max_student); printf("%d students can be stored.\n", max_student); printf("Program Start!\n"); stues = (Student*)malloc(sizeof(Student)*max_student); memset(stues, 0, sizeof(Student)*max_student); }
int Menu(); void In(); void Del(); void Cal(); void Pri();
void Run() { int key = 0; while ((key = Menu()) != 5) { switch (key) { case 1: In(); break; case 2: Del(); break; case 3: Cal(); break; case 4: Pri(); break; default: break; } } }
int Menu() { int key = 0; printf("1. Insert a student\n2. Delete a student\n3. Calculate average\n4. Print all students\n5. Exit\n"); scanf_s("%d", &key); return key; }
void In() { for (int i = 0; i < max_student; i++) { printf("[%d] Name:", stues[i].num); scanf("%s", &stues[i].name); printf("[%d] Korean:", stues[i].num); scanf("%d", &stues[i].kor); printf("[%d] Math:", stues[i].num); scanf("%d", &stues[i].eng); printf("[%d] English:", stues[i].num); scanf("%d", &stues[i].mat); } }
void Del() { char na[MAX_NAME]; printf("Enter the name of student:"); scanf("%s", na);
for (int i = 0; i < max_student; i++) {
if (strcmp(stues[i].name, na) == 0) {
for (int j = i; j < max_student-1; j++); {
stues[i] = stues[i + 1];
max_student--;
}
printf("The data of %s is deleted", stues[i].name);
}
}
}
void Cal() { char na[MAX_NAME]; printf("Enter the name of student:"); scanf("%s", na);
for (int i = 0; i < max_student; ++i) {
double total = stues[i].kor + stues[i].eng + stues[i].mat;
if (!strcmp(stues[i].name, na)) {
printf("%s's average is %.1lf", stues[i].name, total/3);
}
}
}
void Pri() { for (int i = 0; i < max_student; i++) { printf("[%d]Name:%s\n", stues[i].num, stues[i].name); printf("[%d]Korean:%d\n", stues[i].num, stues[i].kor); printf("[%d]Math:%d\n", stues[i].num, stues[i].eng); printf("[%d]English:%d\n", stues[i].num, stues[i].mat); } }
c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_NAME 10
typedef struct {
int num;
char name[MAX_NAME];
int kor;
int eng;
int mat;
} } Student;
Student *stues;
int max_student = 0;
int last_student_idx = 0;
int idx = 1;
void start();
void Run();
int Menu();
void In();
void Del();
void Cal();
void Pri();
int main(void)
{
start();
Run();
free(stues);
return 0;
}
void start()
{
printf("Enter the number of students:");
scanf("%d", &max_student);
printf("%d students can be stored.\n", max_student);
printf("Program Start!\n");
stues = (Student*)malloc(sizeof(Student) * max_student);
memset(stues, 0, sizeof(Student) * max_student);
}
void Run()
{
int key = 0;
while ((key = Menu()) != 5)
{
switch (key)
{
case 1:
In();
break;
case 2:
Del();
break;
case 3:
Cal();
break;
case 4:
Pri();
break;
default:
break;
}
}
}
int Menu()
{
int key = 0;
printf("\n1. Insert a student\n2. Delete a student\n3. Calculate average\n4. Print all students\n5. Exit\n");
scanf("%d", &key);
return key;
}
void In()
{
if(last_student_idx >= max_student)
{
printf ("You can't add more");
return;
}
stues[last_student_idx].num = idx;
printf("[%d] Name:", idx);
scanf("%s", stues[last_student_idx].name);
printf("[%d] Korean:", idx);
scanf("%d", &stues[last_student_idx].kor);
printf("[%d] Math:", idx);
scanf("%d", &stues[last_student_idx].eng);
printf("[%d] English:", idx);
scanf("%d", &stues[last_student_idx].mat);
idx++;
last_student_idx++;
}
void Del()
{
int i, j;
char na[MAX_NAME];
printf("Enter the name of student:");
scanf("%s", na);
for (i = 0; i < last_student_idx; i++)
{
if (strcmp(stues[i].name, na) == 0)
{
printf("The data of %s is deleted", stues[i].name);
for (j = i; j < last_student_idx - 1; j++)
{
stues[j] = stues[j + 1];
}
last_student_idx--;
}
}
}
void Cal()
{
int i;
char na[MAX_NAME];
double total;
printf("Enter the name of student:");
scanf("%s", na);
for (i = 0; i < max_student; ++i)
{
if (!strcmp(stues[i].name, na))
{
total = stues[i].kor + stues[i].eng + stues[i].mat;
printf("%s's average is %.1lf\n", stues[i].name, total/3);
}
}
}
void Pri()
{
int i;
printf("****Total %d***\n\n", last_student_idx);
for (i = 0; i < last_student_idx; i++)
{
printf("[%d]Name:%s\n", stues[i].num, stues[i].name);
printf("[%d]Korean:%d\n", stues[i].num, stues[i].kor);
printf("[%d]Math:%d\n", stues[i].num, stues[i].eng);
printf("[%d]English:%d\n\n", stues[i].num, stues[i].mat);
}
printf("*******************\n");
}
Please run it and analyze the code..
© 2024 OneMinuteCode. All rights reserved.