Из массива удалить первый отрицательный элемент (ошибка в программе) - C (СИ)
Формулировка задачи:
Написал программу
но увы всегда пишет что нет отрицательных. помогите пожалуйста!
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double a[20];
int i=0,z=0,j=0;
printf("Enter mas:\n");
for(i=0;i<20;i++)
scanf("%d",&a[i]); //ввод массива
for(i=0;i<20;i++);
if(a[i]<0)//проверка на отрицательный член
for(;a[i];i++)
{
a[i]=a[i+1];
z++;
}
if (z==0)
{
printf ("no negative");
}
else
{
for(i=0;i<20;i++)
printf ("%i",a[i]);
}
}Решение задачи: «Из массива удалить первый отрицательный элемент (ошибка в программе)»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i=0,z=0, n = 20;
int a[n];
printf("Enter mas:\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]); //ввод массива
for(i=0;i<n;i++)
if(a[i]<0)//проверка на отрицательный член
{
for(;i < n;i++)
{
a[i]=a[i+1];
z++;
}
n--;
}
if (z==0)
{
printf ("no negative");
}
else
{
for(i=0;i<n;i++)
printf ("%d ",a[i]);
}
return 0;
}
Объяснение кода листинга программы
В этом коде используется язык программирования C.
- Сначала объявляются переменные:
iиспользуется как счетчик для двух циклов.zиспользуется для отслеживания количества удаленных элементов.n- это размер массива.a[n]- это сам массив, в котором будет храниться ввод пользователя.
- Затем пользователю предлагается ввести массив:
- Используется цикл
for, чтобы просить пользователя ввестиnчисел. - Функция
scanfиспользуется для считывания ввода пользователя и сохранения его в массивеa.
- Используется цикл
- Далее происходит удаление первого отрицательного элемента:
- Используется второй цикл
for, чтобы пройти по массиву и проверить каждое число. - Если число отрицательное, то оно будет удалено из массива, а переменная
zувеличится на 1. - Удаление элемента осуществляется путем переноса всех последующих элементов на одну позицию вперед.
- Используется второй цикл
- После этого проверяется, были ли удалены отрицательные числа:
- Если переменная
zравна 0, значит, в массиве не было отрицательных чисел. - Если переменная
zне равна 0, значит, были удалены отрицательные числа, и их количество отображается на экране.
- Если переменная
- Наконец, выводятся элементы массива:
- Используется цикл
for, чтобы пройти по массиву и вывести каждый элемент. - Функция
printfиспользуется для вывода чисел на экран. Этот код предназначен для удаления первого отрицательного числа из массива. Если в массиве нет отрицательных чисел, то выводится сообщениеno negative. Если есть отрицательные числа, то они удаляются, и остальные числа выводятся на экран.
- Используется цикл