c언어 질문드려요
조회수 784회
뒤늦게 편입을해서 거의 사실상 독학중인 한 학생입니다. 과제로 성적관리 프로그램을 작성중인데 막히는 부분이 있어 질문드려요
- void In에서 입력을 받도록 설정하였는데 stues[i]가 입력을 받을때마다 올라가야하는데 올라가질 않네요 ㅠㅠ (2명을 입력한다치면 0부터 시작하니 [0]이름/[0]국어/[0]영어/[0]수학 -> [1]이름.....)
- 1번 질문과 비슷한 맥락인거 같은데 저장 및 출력되는 번호가 [1]부터 시작되도록 하고 싶습니다
pragma warning (disable:4996)
include
include
include
include
define MAX_NAME 10
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); } }
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
#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("더 이상 추가할 수 없습니다"); 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("*****총 원 %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"); }
실행해 보시고 코드도 분석해보시길 바랍니다...
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력