По введеным строкам посчитать среднюю оценку - 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 (); }
Объяснение кода листинга программы
В этом коде происходит следующее:
- Подключение необходимых библиотек.
- Начало программы. Переменные:
- n - количество студентов;
- x - переменная для хранения оценки;
- p - переменная для хранения средней оценки;
- i, j - индексы для прохождения по массивам;
- z - длина строки с оценками;
- p1 - указатель на первый символ строки с оценками;
- s - массив строк со значениями оценок;
- r - массив строк для хранения средних оценок.
- Ввод количества студентов и результатов.
- Очистка буфера ввода.
- Получение результатов и сохранение их в массив s.
- Проход по всем строкам с оценками и подсчет суммы средних оценок.
- Вычисление среднего значения.
- Преобразование среднего значения в строку и сохранение в массив r.
- Определение длины строки с оценками.
- Копирование строки с оценками в массив r.
- Вывод на экран результатов.
- Очистка буфера ввода.
- Получение нажатия клавиши для выхода из программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д