Программа работы с массивами, нужно найти ошибку - 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) {

Объяснение кода листинга программы

  1. Проверяется условие: x[j] >= 0.
  2. Если условие выполняется, то выполняется блок кода внутри фигурных скобок.
  3. В данном случае, в блоке кода нет никаких действий, поэтому происходит пропуск и переход к следующему оператору.
  4. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  5. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  6. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  7. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  8. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  9. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  10. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  11. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  12. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  13. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  14. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  15. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  16. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  17. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  18. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  19. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.
  20. Оператор в данном случае отсутствует, поэтому происходит пропуск и переход к следующему оператору.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы