Я новичок в программировании и борюсь с краткостью кодирования.
Практическая задача дала таблицу значений (имя, ID и четыре опроса для каждого учащегося), которую нам было предложено ввести struct
, затем распечатать информацию и среднее значение для каждого учащегося.
Хотя я смог сделать это, мой код для него не элегантен.Мне нужна помощь, чтобы сделать его более лаконичным, чтобы я мог сейчас выработать хорошие навыки кодирования.
Вот практическая проблема:
Создание структуры данных для хранения информациина студентов в class
.Для каждого студента профессор хочет сохранить (на данный момент это будет расширено позже):
- имя (строка)
- идентификационный номер университета (целое число)
- тестов (массив из 4-х тестов с плавающей точкой)
Напишите программу, которая инициализирует переменную в объявлении, а затем вычислит и напечатает среднее значение для каждого студента.
Мне удалось выяснить, как поместить в структуру float с четырьмя значениями, но я не могу понять, как сжать массив внутри структуры, чтобы уменьшить длину моегокод.
Кроме того, я закодировал значения для каждого студента отдельно, но изо всех сил пытался заставить одно печатное заявление работать для всех студентов, и вместо этого мне пришлось включать отдельные печатные заявления для каждого студента.Я подозреваю, что есть лучший способ сделать это с помощью цикла, но я не могу заставить его работать.
#include <stdio.h>
#include <stdlib.h>
struct student{
char name[30];
int id_no;
float quiz[4];
};
int main()
{
int i;
float avg;
struct student student1;
strcpy(student1.name,"C,Joe");
student1.id_no = 999;
student1.quiz[0] = 10.0;
student1.quiz[1] = 9.5;
student1.quiz[2] = 0.0;
student1.quiz[3] = 10.0;
struct student student2;
strcpy(student2.name,"Hernandez, Pete");
student2.id_no = 784;
student2.quiz[0] = 10.0;
student2.quiz[1] = 10.0;
student2.quiz[2] = 9.0;
student2.quiz[3] = 10.0;
struct student student3;
strcpy(student3.name,"Brownnose, Violet");
student3.id_no = 999;
student3.quiz[0] = 7.5;
student3.quiz[1] = 6.0;
student3.quiz[2] = 8.5;
student3.quiz[3] = 7.5;
{
printf("Name: %s ",student1.name);
printf("ID: %d ",student1.id_no);
avg = 0;
for(i=0;i<3;i++)
{
printf(" Quiz %d: %.1f ",i,student1.quiz[i]);
avg = avg + student1.quiz[i];
}
avg = avg/4;
printf("\nAverage quiz score: %.1f\n",avg);
}
printf("\n");
{
printf("Name: %s ",student2.name);
printf("ID: %d ",student2.id_no);
avg = 0;
for(i=0;i<3;i++)
{
printf(" Quiz %d: %.1f ",i,student2.quiz[i]);
avg = avg + student2.quiz[i];
}
avg = avg/4;
printf("\nAverage quiz score: %.1f\n",avg);
}
printf("\n");
{
printf("Name: %s ",student3.name);
printf("ID: %d ",student3.id_no);
avg = 0;
for(i=0;i<3;i++)
{
printf(" Quiz %d: %.1f ",i,student3.quiz[i]);
avg = avg + student3.quiz[i];
}
avg = avg/4;
printf("\nAverage quiz score: %.1f\n",avg);
}
return 0;
}
Выходные результаты выглядят нормально.Однако метод, который я использовал для этого, отсутствует (обратите внимание, что в конце мне пришлось использовать три утверждения для печати - по одному для каждого учащегося).
Заранее благодарен за любую помощь!