По введеным строкам посчитать среднюю оценку - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здраствуйте, помогите с программой, пожалуйста, не могу понять почему она не работает. Должно по введеным строкам (формат - имя и пять оценок через запятую) посчитать среднюю оценку и вывести в новый массив строк. После ввода строки прога заканчивается с кодом -1073741819:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
 
int main(int argc, char *argv[])
{
 
    float x,p; int i,j,n,z; char *p1,s[30][255],r[30][255];
    printf ("Введите количество студентов:\n");
    scanf ("%d",&n);
    fflush (stdin);
    printf ("Введите результаты:\n");
    for (i=0;i<n;i++)
            gets(s);
     for (i=0;i<n;i++)
    {
         x=0;
         j=0;
    while (j<strlen(s))
         {
        if (s[j]>='0' && s[j]<='5') {
            p=atof(&s[j]);
            x=x+p;
            j++;
        }
      i++;
    }
    x=x/5;
    sprintf (r,"%f",x);
    z=p1-s;
    strncpy(r,s,z);
     for (i=0;i<n;i++)
         printf ("%s",r);
     }
  fflush (stdin);
 getch ();
}

Решение задачи: «По введеным строкам посчитать среднюю оценку»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
 
int main(int argc, char *argv[])
{
 
float x,p; int i,j,n,z; char *p1,s[30][255],r[30][255];
printf ("Введите количество студентов:\n");
scanf ("%d",&n);
fflush (stdin);
printf ("Введите результаты:\n");
for (i=0;i<n;i++)
gets(s);
for (i=0;i<n;i++)
{
x=0;
j=0;
while (j<strlen(s))
{
if (s[j]>='0' && s[j]<='5') {
p=atof(&s[j]);
x=x+p;
j++;
}
i++;
}
x=x/5;
sprintf (r,"%f",x);
z=p1-s;
strncpy(r,s,z);
for (i=0;i<n;i++)
printf ("%s",r);
}
fflush (stdin);
getch ();
}

Объяснение кода листинга программы

В этом коде происходит следующее:

  1. Подключение необходимых библиотек.
  2. Начало программы. Переменные:
    • n - количество студентов;
    • x - переменная для хранения оценки;
    • p - переменная для хранения средней оценки;
    • i, j - индексы для прохождения по массивам;
    • z - длина строки с оценками;
    • p1 - указатель на первый символ строки с оценками;
    • s - массив строк со значениями оценок;
    • r - массив строк для хранения средних оценок.
  3. Ввод количества студентов и результатов.
  4. Очистка буфера ввода.
  5. Получение результатов и сохранение их в массив s.
  6. Проход по всем строкам с оценками и подсчет суммы средних оценок.
  7. Вычисление среднего значения.
  8. Преобразование среднего значения в строку и сохранение в массив r.
  9. Определение длины строки с оценками.
  10. Копирование строки с оценками в массив r.
  11. Вывод на экран результатов.
  12. Очистка буфера ввода.
  13. Получение нажатия клавиши для выхода из программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5
Похожие ответы