Программа компилируется, но при выполнении крашится - C (СИ)
Формулировка задачи:
Задача состоит в том, чтобы заполнить массив t1[N] случайными числами, а после задать каждому элементу массива t2[(N-1)/2] значение, которое является средним арифметическим значений пар соседних элементов из t1[N]. Написал код, но после запуска вылетает окно „Прекращена работа программы“, и на этом всё заканчивается. Использую Code::Blocks, но, может, проблема в коде?
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { srand(time(NULL)); int N; printf("Podaj rozmiar tablicy: "); scanf("%d", &N); int t1[N]; int t2[(N + 1) / 2]; for(int i = 0; i < N; i++) { t1[i] = 55 + rand() % 112; printf("%d\n", t1[i]); } int c = 0; if(N % 2 == 0) { for(int i = 1; i < N; i + 2) { t2[c] = (t1[i] + t1[i - 1]) / 2; printf("%d\n", t2[с]); c++; } } else { for(int i = 1; i < N - 2; i + 2) { t2[c] = (t1[i] + t1[i - 1]) / 2; printf("%d\n", t2[с]); c++; } t2[((N + 1) / 2) - 1] = t1[N - 1]; printf("%d\n", t2[((N + 1) / 2) - 1]); } return 0; }
Решение задачи: «Программа компилируется, но при выполнении крашится»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> int sr(int a, int b) { return ( (a + b)/2 ); } int main(void) { srand(time(NULL)); int N; printf("Podaj rozmiar tablicy: "); scanf("%d", &N); printf("\n"); int t1[N]; int t2[(N + 1) / 2]; for(int i = 0; i < N; i++) { t1[i] = 550 + rand() % 112; printf("%d ", t1[i]); } printf("\n"); int c = 0, i; for(i = 1; i < N; i += 2, c++) { t2[c] = sr(t1[i], t1[i-1]); printf("%d ", t2[c]); } if(N%2==1) printf("%d",sr(t1[N-1],t1[N-2])); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем функцию sr, которая складывает два числа и делит их на 2
- Задаем размер массива через ввод с клавиатуры
- Инициализируем генератор случайных чисел
- Создаем массив t1 заданного размера и заполняем его случайными числами от 550 до 661
- Создаем массив t2, размер которого на 1 больше, чем половина от N, и заполняем его средними значениями из пары соседних элементов массива t1
- Выводим значения массива t2 на экран
- Если N нечетное, то выводим последнее значение, которое является результатом применения функции sr к последним двум элементам массива t1
- Завершаем программу и возвращаем 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д