У меня есть массив: values [], который заполняется целыми числами и удваивается
Hello Zari Case,
Прежде всего, не существует такой вещи, как"массивы смешанного типа" в C или C ++.Если вам нужно удваивать в вашем массиве, тогда вам нужен массив типа double , что означает, что все ваши элементы массива будут иметь тип double .
Ну, это неЭто не проблема, потому что вы можете представить целое число в десятичной форме, указав десятичное число 0 , например:
- 5 -> 5.0
- 1337 ->1337,0
- 0 -> 0,0
и т. Д.
Итак, 2 1534 3 90,0 76,8 100,0 1245 1 99,0 будут интерпретироваться как 2 студента,У студента 1534 есть 3 класса (90,0, 76,8, 100,0), а у студента 1245 - 1 класс (99,0).
Если вам нужен такой точный синтаксис, вы можете быстро кодировать парсер , который пройдет через ваши записи и даст вам наивысшую оценку для каждого учащегося.
Полагаю, вам нужно что-то подобное (например, я добавил данные в ваш массив):
#include <stdio.h>
double highest_mark(double *mark_array, int number_of_marks)
{
double max_grade = -1.0;
for (int i = 0; i < number_of_marks; i++)
if (mark_array[i] > max_grade)
max_grade = mark_array[i];
return max_grade;
}
int main()
{
double student_info[] = {5.0, 1534.0, 3.0, 90.0, 76.8, 100.0, 1245.0, \
1.0, 99.0, 5555.0, 7.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 42.0, 2, 99.0, 98.0, \
1337.0, 1.0, 0.0};
int number_of_students = (int)student_info[0], number_of_marks, student_id;
int current_index = 1;
printf("Number of students: %d\n---\n", number_of_students);
while (number_of_students--) {
student_id = student_info[current_index];
number_of_marks = student_info[current_index + 1];
printf("Student ID: %d\n", student_id);
printf("Number of marks: %d\n", number_of_marks);
for (int i = 0; i < number_of_marks; i++)
printf("\tMark %d: %.1f\n", i + 1, student_info[current_index + i + 2]);
printf("\t\tMax grade: %.1f\n", highest_mark(&student_info[current_index + 2], number_of_marks));
current_index += (2 + number_of_marks);
}
return 0;
}
Это даст такой результат:
Number of students: 5
---
Student ID: 1534
Number of marks: 3
Mark 1: 90.0
Mark 2: 76.8
Mark 3: 100.0
Max grade: 100.0
Student ID: 1245
Number of marks: 1
Mark 1: 99.0
Max grade: 99.0
Student ID: 5555
Number of marks: 7
Mark 1: 1.0
Mark 2: 2.0
Mark 3: 3.0
Mark 4: 4.0
Mark 5: 5.0
Mark 6: 6.0
Mark 7: 7.0
Max grade: 7.0
Student ID: 42
Number of marks: 2
Mark 1: 99.0
Mark 2: 98.0
Max grade: 99.0
Student ID: 1337
Number of marks: 1
Mark 1: 0.0
Max grade: 0.0
Не стесняйтесь спрашивать, есть ли у вас дополнительные вопросы или отмечать ваш квестИон как решено, если это помогло вам.
J.Smith