Программа крашится после ввода количества членов - C (СИ)
Формулировка задачи:
Что тут не так? Программа крашится после ввода количества членов.
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n, m, sum_chet=0, sum_nechet=0, niz, verh, i;
time_t t; // Текущее время для инициализации генератора случайных чисел(рандомайзера)
srand((unsigned) time(&t)); // Инициализация рандомайзера
printf("\nVvedite nizhnuiu granitsu: ");
scanf("%d", &niz);
printf("\nVvedite verhnuiu granitsu: ");
scanf("%d", &verh);
printf("\nVvedite kolichestvo chlenov: ");
scanf("%d", &n);
int vector[i];
printf("\nVector: \n");
for(i=0; i<n; i++)
{
vector[i]=rand(); // Получение случайного числа в диапазоне от niz до verh
printf("%5d", vector[i]);
}
for(i=0; i<10; i++){
if((i)&1==1 && vector[i]&1==0){
sum_chet+=vector[i];
}
if((i)&1==0 && vector[i+1]&1==0){
sum_nechet+=vector[i];
}
}
printf("sum_nechet = %d, sum_chet =%d\n", sum_nechet, sum_chet);
return 0;
}Решение задачи: «Программа крашится после ввода количества членов»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int n, m, sum_chet=0, sum_nechet=0, niz, verh, i;
time_t t; // Текущее время для инициализации генератора случайных чисел(рандомайзера)
srand((unsigned) time(&t)); // Инициализация рандомайзера
printf("\nVvedite nizhnuiu granitsu: ");
scanf("%d", &niz);
printf("\nVvedite verhnuiu granitsu: ");
scanf("%d", &verh);
printf("\nVvedite kolichestvo chlenov: ");
scanf("%d", &n);
int vector[n];
printf("\nVector: \n");
for(i=0; i<n; i++)
{
int s = 1;
int t =rand()%verh;
do
{
t =rand()%verh;
if (t < verh || t > niz) s=0;
}
while(s);
vector[i]=t; // Получение случайного числа в диапазоне от niz до verh
printf("%5d ", vector[i]);
}
for(i=0; i<n; i++){
if(vector[i]%2==0){
sum_chet+=vector[i];
} else {
sum_nechet+=vector[i];
}
}
printf("sum_nechet = %d, sum_chet =%d\n", sum_nechet, sum_chet);
return 0;
}
Объяснение кода листинга программы
- Объявление переменных: n, m, sum_chet, sum_nechet, niz, verh, i, t (для временной метки)
- Инициализация времени для использования в генераторе случайных чисел
- Ввод нижней границы: printf(
\nVvedite nizhnuiu granitsu:); scanf(%d, &niz); - Ввод верхней границы: printf(
\nVvedite verhnuiu granitsu:); scanf(%d, &verh); - Ввод количества членов: printf(
\nVvedite kolichestvo chlenov:); scanf(%d, &n); - Создание массива vector размером n: int vector[n];
- Заполнение массива vector случайными числами, удовлетворяющими заданным условиям (больше или равно niz и меньше или равно verh)
- Вывод массива vector: printf(
\nVector: \n); - Поиск первого четного числа в массиве и суммирование четных чисел
- Поиск первого нечетного числа в массиве и суммирование нечетных чисел
- Вывод суммы четных и нечетных чисел: printf(
sum_nechet = %d, sum_chet =%d\n, sum_nechet, sum_chet); - Возврат 0, чтобы указать, что программа успешно завершилась