Skip to content

Instantly share code, notes, and snippets.

@lgl
Created December 21, 2014 10:08
Show Gist options
  • Save lgl/4beee20f8d9a5662fef1 to your computer and use it in GitHub Desktop.
Save lgl/4beee20f8d9a5662fef1 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <wchar.h>
#define N 1000
char *student_list[N];
void debt();
void student_average_scope();
void group_average_scope();
int main() {
FILE *file;
int choice;
char buffer[200];
int i = 0;
file = fopen("students.txt", "r");
if (file == NULL) {
puts("students.txt не найден");
return 1;
}
while (fgets(buffer, sizeof buffer, file) != NULL) {
student_list[i++] = strdup(buffer);
}
fclose(file);
do {
puts("\nВыберите номер пункта меню:");
puts("1 - Cтуденты, имеющие задолженности");
puts("2 – Средний балл каждого студента");
puts("3 – Средний балл всей группы");
puts("4 - Выход\n");
scanf("%d", &choice);
switch (choice) {
case 1:
debt();
break;
case 2:
student_average_scope();
break;
case 3:
group_average_scope();
break;
case 4:
break;
default:
puts("\nНужно вводить номер пункта от 1 до 4");
break;
}
} while (choice != 4);
return 0;
}
void debt() {
char name[100];
char test[15];
wchar_t test2[15];
wchar_t * pch;
int group;
int exam;
int counter_debt;
int i;
for (i = 0; i < 4; i++) {
counter_debt = 0;
sscanf(student_list[i], "%d %[^0-9] %d %s", &group, name, &exam, test);
mbstowcs(test2, test, 15);
pch = wcschr(test2, L'н');
while (pch != NULL) {
counter_debt++;
pch = wcschr(pch + 1, L'н');
}
printf("%i", counter_debt);
/* if (counter_debt > 0) { */
/* printf("%d %s-- задолженностей: %d\n", group, name, counter_debt); */
/* } */
}
}
void student_average_scope() {
char name[50];
int group;
int exam;
for (int i = 0; i < 4; i++) {
int average = 0;
int digit = 0;
int counter_digits = 0;
sscanf(student_list[i], "%d %[^0-9] %d", &group, name, &exam);
while (exam > 0) {
digit = exam % 10;
average += digit;
counter_digits++;
exam = exam / 10;
}
printf("%d %s-- %.1f\n", group, name, (double)average / counter_digits);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment