Программа работы с массивами, нужно найти ошибку - C (СИ)
Формулировка задачи:
В массивах х[10] и y[13] перемножить положительные элементы, а отрицательные увеличить на 2. После преобразований вычислить число элементов, идущих после второго отрицательного элемента массива.
Вывести на экран для каждого массива: элементы массива в строку(кол-во элементов в строке на экране выбрать самостоятельно) до и после преобразований, найденное число элементов.
Формулы представлены в коде, так что смысла их переписывать не вижу, помогите пожалуйста найти ошибку
#include <stdio.h>
#include <math.h>
#include <malloc.h>
int main(){
int *x; //указатель на массив
int *y;
x=(int*)malloc(10*sizeof(int));// рассчитываем размер массива и выделяем память
y=(int*)malloc(13*sizeof(int));
float umX=0.0;
float umY=0.0;
int NegNumXCounter = 0;
int NegNumYCounter = 0;
int j,i,sumX,sumY,NegNumLimit=2;
for (j=0;j<10;j++){
x[j]=cos(tan(j)*(j))+(1.0/4);
printf("\n Massiv X do preobrazovaniya %d ",x[j]); // выводим массив до преобразования
if(x[j>=0]){
umX *= x[j]; // перемножаем положительные элементы
}
else
x[j]=x[j]+2; // увеличиваем отрицательные элементы на 2
if(NegNumXCounter>=NegNumLimit){
sumX+=x[j];
}
if(x[j]<0.0){
NegNumXCounter++;
}
printf("\n Massiv X posle preobrazovaniya %d ",x[j]);
free(x);
}
for (i=0; i<13; i++){
y[i]=(i % 2 ? -1 : 1)* sin(fabs(j-(sqrt(fabs(j)))))(j-j/(j*j+3.6)); //формула выч-ия y
printf("\n Massiv Y do preobrazovaniya %d ",x[i]);
if(y[i>=0]){
umY *= y[i];
}
else
y[i]=y[i]+2;
if (NegNumYCounter>=NegNumLimit){
sumY+=y[i];
}
if(y[i]<0.0){
NegNumYCounter++;
printf("\n Massiv Y posle preobrazovaniya %d ",y[i]); //выводим массив после преобразования
free(y);
}
printf("kol-vo otr elementov posle 2 otr\n", sumY, sumX); //выводим кол-во элементов
}
getchar(); getchar();
return 0;
}Решение задачи: «Программа работы с массивами, нужно найти ошибку»
textual
Листинг программы
if (x[j] >= 0) {
Объяснение кода листинга программы
- Проверяется условие: x[j] >= 0.
- Если условие выполняется, то выполняется блок кода внутри фигурных скобок.
- В данном случае, в блоке кода нет никаких действий, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
- Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.