Массив структур.
Дана ведомость студенческой группы в виде:
Астанин 4 3 2 1 5 (фамилия, оценки)
Гусева 3 2 5 5 4
Определить, сколько студентов имеют неудовлетворительные оценки (0,1,2)
и распечатать фамилии тех, у кого больше двух таких оценок.
Не могу определить, сколько студентов имеют неудовл оценки и посчитать тех, у кого больше двух таких оценок помогите пж
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
#include <string.h>
#include<locale.h>
#include<stdlib.h>
int main()
{
setlocale(LC_ALL, "Rus");
int i = 0, n = 0, k = 1;
char*ptr[10];
int ex = 0;
struct {
char fam[20];
char in[5];
char oc[20];
} spisok[20];
*ptr = (char*)malloc(sizeof(char));
do {
printf("Сколько всего учеников? Не более 30\n");
scanf("%d", &n);
} while (n < 1 || n>30);
do {
printf("Сколько всего экзаменов? Не более 5\n");
scanf("%d", &ex);
} while (ex < 1 || ex>5);
for (i = 0; i < n; i++) {
printf("Введите фамилию:\n");
scanf("%s", spisok[i].fam);
printf("Введите инициалы:\n");
scanf("%s", spisok[i].in);
printf("Введите оценки через пробел (возможные варианты: 0, 1, 2, 3, 4, 5):\n");
getchar();
gets_s(spisok[i].oc);
ptr[i] = strtok(spisok[i].oc, " ");
while (ptr != NULL) {
if (atoi(ptr[i]) < 3 && atoi(ptr[i]) > -1)
puts(ptr[i]);
ptr[i] = strtok(NULL, " ");
}
}
}
C/C++
Помогите плиз написать программу на Си Массив структур
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
const int n = 21;
struct spisok
{
char * Name;
unsigned short int ball[5];
};
int main()
{
int i = 0, c,j;
struct spisok students[n];
for(int x = 0; x < n; x++)
{
students[x].Name = (char*) malloc(sizeof(char) * n);
}
FILE * f1;
f1 = fopen("data.txt","r");
while( (c = fgetc(f1)) != EOF && i < n)
{
j = 0;
while((c != ' ' && c != '\t' && c != '\n' && c != '\r' && c != EOF) && j < n - 1)
{
students[i].Name[j++] = c;
c = fgetc(f1);
}
students[i].Name[j] = '\0';
int k = 0;
while((c != '\n' && c != '\r' && c != EOF) && k < 5)
{
if(isdigit(c))
{
students[i].ball[k++] = c - '0';
}
c = fgetc(f1);
}
i++;
}
fclose(f1);
int count_neg = 0;
for(int x = 0; x < i; x++)
{
for(int y = 0; y < 5; y++)
{
if(students[x].ball[y] < 3)
{
count_neg++;
break;
}
}
}
if(count_neg)
{
printf("%d студентов имеют неудовлетворительные оценки. \n", count_neg);
int count_neud;
for(int x = 0; x < i; x++)
{
count_neud = 0;
for(int y = 0; y < 5; y++)
{
if(students[x].ball[y] < 3)
count_neud++;
if(count_neud > 2)
{
printf("%s\n",students[x].Name);
break;
}
}
}
}
else
{
printf("Студентов с неудовлетворительными оценками нет. \n");
}
for(int x = 0; x < n; x++)
{
if(students[x].Name != (char*) NULL)
{
free(students[x].Name);
students[x].Name = (char*) NULL;
}
else exit(1);
}
return 0;
}

#include <ctype.h>
#include <stdlib.h>
const int n = 21;
struct spisok
{
char * Name;
unsigned short int ball[5];
};
int main()
{
int i = 0, c,j;
struct spisok students[n];
for(int x = 0; x < n; x++)
{
students[x].Name = (char*) malloc(sizeof(char) * n);
}
FILE * f1;
f1 = fopen("data.txt","r");
while( (c = fgetc(f1)) != EOF && i < n)
{
j = 0;
while((c != ' ' && c != '\t' && c != '\n' && c != '\r' && c != EOF) && j < n - 1)
{
students[i].Name[j++] = c;
c = fgetc(f1);
}
students[i].Name[j] = '\0';
int k = 0;
while((c != '\n' && c != '\r' && c != EOF) && k < 5)
{
if(isdigit(c))
{
students[i].ball[k++] = c - '0';
}
c = fgetc(f1);
}
i++;
}
fclose(f1);
int count_neg = 0;
for(int x = 0; x < i; x++)
{
for(int y = 0; y < 5; y++)
{
if(students[x].ball[y] < 3)
{
count_neg++;
break;
}
}
}
if(count_neg)
{
printf("%d студентов имеют неудовлетворительные оценки. \n", count_neg);
int count_neud;
for(int x = 0; x < i; x++)
{
count_neud = 0;
for(int y = 0; y < 5; y++)
{
if(students[x].ball[y] < 3)
count_neud++;
if(count_neud > 2)
{
printf("%s\n",students[x].Name);
break;
}
}
}
}
else
{
printf("Студентов с неудовлетворительными оценками нет. \n");
}
for(int x = 0; x < n; x++)
{
if(students[x].Name != (char*) NULL)
{
free(students[x].Name);
students[x].Name = (char*) NULL;
}
else exit(1);
}
return 0;
}

Похожие вопросы
- Помогите пожалуйста написать программу на Си
- Помогите, пожалуйста, написать программу на C++ (массивы)
- Работа со структурами. Написать программу для СИ
- Напишите пожалуйста программу на СИ, массив стат или динам
- Помогите написать программу на СИ
- Написать программы на СИ
- Написать программу на Си, помогите!!!
- Помогите пожалуйста написать программу, реализующую десять генераторов псевдослучайных чисел.СИ!!!!
- С++.Помогите пожалуйста! Написать программу по обработке динамических массивов. Размеры массивов вводить с клавиатуры.
- Помогите пожалуйста написать программу небольшую в C++. Одномерный массив
Но принцип отбора студентов должен быть понятен.