Помоги с основным упражнением C

Я начинаю изучать язык c и нуждаюсь в небольшом количестве помощи с этим упражнением.

Почти каждый факт и только лишенная составлять это и видеть, функционирует ли оно, но я не очень уверена, как делать последнюю часть.

Когда избран выбор 4 из меню, программа должна делать поездку массива (я думаю, что это поездка), и подтверждать, существует ли стоимость в первой колонне, которая была бы превышающей 1, во второй колонне, которая они превышающие 0.2 и в третьей колонне, которая они превышающие 0.02. Если он находит эту стоимость, он появится сообщение, которое он показывает, что есть по крайней мере аномальная стоимость, иначе, появится сообщение показывая, что стоимость, которую ты ввел, - правильна.

Это мой код:

#include <conio.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>

#define NUMPIPETAS 3
#define MAXMEDICIONES 5

void leerMediciones(int m[NUMPIPETAS][MAXMEDICIONES]);
void imprimirMediciones(int m[NUMPIPETAS][MAXMEDICIONES]);
void calcularPromedio (int m[NUMPIPETAS][MAXMEDICIONES]);
void calcularDesviacionTipica(int m[NUMPIPETAS][MAXMEDICIONES]);
void calcularErrorAleatorio(int m[NUMPIPETAS][MAXMEDICIONES]);
void buscarAnomalos(int m[NUMPIPETAS][MAXMEDICIONES]);

void main(){

    int matriz[NUMPIPETAS][MAXMEDICIONES];
    int m[NUMPIPETAS][MAXMEDICIONES], sumaColumnas[NUMPIPETAS];
    float x[15];
    int opc=0;
    char choice;

    do {
        leerMediciones(m);
        system("cls");

        printf("-----------MENU-----------\n\n");
        printf("1.- Introducir las mediciones\n");
        printf("2.- Imprimir mediciones\n");
        printf("3.- Calcular error aleatorio\n");
        printf("4.- Buscar valores anomalos\n");
        printf("0.- Salir\n\n");
        printf("Elige una opcion: ");

        scanf("%d",&opc);
        printf("----------------------------\n");

        switch(opc)
        {
            case 1: leerMediciones(matriz);
                    break;

            case 2: imprimirMediciones(matriz);
                    break;

            case 3: calcularPromedio (matriz);
                    calcularDesviacionTipica(matriz);
                    calcularErrorAleatorio(matriz);
                    break;

            case 4: buscarAnomalos(matriz);
                    break;

            default:printf("Opcion no valida. Por favor, vuelva a elegir. \n");
        }
      }while(choice !=4);

        imprimirMatriz(matriz);
     }

void leerMediciones(int m[NUMPIPETAS][MAXMEDICIONES]){

    int i,j;

    printf("Introduzca los elementos de la matriz %dx%d\n",NUMPIPETAS,MAXMEDICIONES);//deberia poner aqui i y j en vez de numpipetas y maxmediciones??

      for(i=0;i<NUMPIPETAS;i++){
          for(j=0;j<MAXMEDICIONES;j++){

            printf("Fila %d - Columna %d: ", i,j);
            scanf("%d", &m[i][j]);
         }
      }
}

void imprimirMediciones(int m[NUMPIPETAS][MAXMEDICIONES]){

    int i,j;
    printf("Impresion de la Matriz:\n");

       for(i=0;i<NUMPIPETAS;i++){
           for(j=0;j<MAXMEDICIONES;j++){
               printf("%d ", m[i][j]);
           }
                printf("\n");
       }
}

void calcularPromedio (int m[NUMPIPETAS][MAXMEDICIONES]){

   int i,j;
   float sumaTotal, sumaColumnas[NUMPIPETAS], suma, media;
/*Ahora calculamos la media*/
/*Pero primero hacemos la suma total*/

    sumaTotal=0;

     for(i=0;i<NUMPIPETAS;i++){
        for(j=0;j<MAXMEDICIONES;j++){
            sumaTotal = sumaTotal + m[NUMPIPETAS][MAXMEDICIONES];
                     }
                }

            /*Calculamos la suma de cada columna*/
                for(j=0;j<MAXMEDICIONES;j++){
                    suma = 0;

                    for(i=0;i<NUMPIPETAS;i++){
                        suma = suma + m[NUMPIPETAS][MAXMEDICIONES];
                    }

                  sumaColumnas[j] = suma;

            /*Ahora hacemos la media de cada columna*/
                  media = suma/5;
                }
}

void calcularDesviacionTipica(int m[NUMPIPETAS][MAXMEDICIONES]){

   int i,j;
   float suma1=0, media, varianza, desviacion_tipica;
   int x[i];
/*Calculamos la desviacion tipica*/

    for(i=0;i<NUMPIPETAS;i++){
        for(j=0;j<MAXMEDICIONES;j++){
                {
                 suma1 = suma1 + pow((media - x[i]), 2);
                }
        }
    }

    varianza = suma1 / 4;
    desviacion_tipica = sqrt(varianza);
        printf("Desviacion tipica = %.2f\n", desviacion_tipica);
        getch();
}

void calcularErrorAleatorio(int m[NUMPIPETAS][MAXMEDICIONES]){

   float error_aleatorio, desviacion_tipica;
    error_aleatorio = desviacion_tipica/sqrt(5);
        printf("Error aleatorio = %.2f\n", error_aleatorio);
        getch();
}

void buscarAnomalos(int m[NUMPIPETAS][MAXMEDICIONES]){
    //buscar numeros mayores que 1 en la primera columna
    //mayores que 0.2 en la segunda columna y que 0.02 en la tercera columna
 int i,j;

/*Vamos a hacer un recorrido para calcular los valores anomalos*/
    for(j=0;j<MAXMEDICIONES;j++){
         for(i=0;i<NUMPIPETAS;i++){
            if
         }
    }
}
0
задан 12.12.2016, 10:04
3 ответа

Обрати внимание, что в определении функции...

void buscarAnomalos(int m[NUMPIPETAS][MAXMEDICIONES]);

... будь неполной, ты был бы должен добавлять:

/*Vamos a hacer un recorrido para calcular los valores anomalos*/
for(j=0;j<MAXMEDICIONES;j++){
      for(i=0;i<NUMPIPETAS;i++){

       /*Esto es nuevo*/
       if(i == 0 && m[i][j] > 1){
        /*Número anómalo*/
        printf("Número mayor a 1 en la primera columna"); 
       }
       if(i == 1 && m[i][j] > 0.2){
        /*Número anómalo*/
        printf("Número mayor a 0.2 en la Segunda columna"); 
       }
       if(i == 2 && m[i][j] > 0.02){
        /*Número anómalo*/
        printf("Número mayor a 0.02 en la tercera columna"); 

        /*FIN DE LO NUEVO*/
       }
     }
}
printf("La matriz está correcta");

Лично он кружил бы for, он обратился бы сначала из-за колонны и после из-за линии.

Внутри if ты был бы должен размещать твое осуществление.

1
ответ дан 24.11.2019, 12:12

Из-за которого я читаю, Вїya у тебя это почти каждый факт есть не? Я не понимаю, что ты видишь трудность ahГ-. Ло Гєnico, что tendrГ-эксперт, что делать - внутри укрытого цикла buscarAnomalos, () состоит в том, чтобы смотреть, i - первая, вторая или третья колонна ли, и в funciГіn смотрения этого, превосходящая ли стоимость тех, что ты сказал.

//primera columna
if(i==0 && m[j][i]>1){
   //Valor anómalo
}
//segunda columna
if(i==1 && m[j][i]>0.2){
   //Valor anómalo
}
//tercera columna
if(i==2 && m[j][i]>0.02){
   //Valor anómalo
}

И эти были бы тремя случаями я верю. внутри комментариев, deberГ-эксперта aГ±adir ты implementaciГіn, чтобы относиться к тому, что происходит, в случае когда находит стоимость anГіmalo.

0
ответ дан 24.11.2019, 12:12

обрати внимание размеры, заявив, которые будьте должен кружить индексы, и ты мог бы делать это:

for (i=0; i

   if( m[i][j] > 1){
    printf("Número mayor a 1 en la primera columna"); 
   }
   else
     if(m[i][j] > 0.2){
    printf("Número mayor a 0.2 en la Segunda columna"); 
   }
   else 
    printf("Número mayor a 0.02 en la tercera columna"); 
   }

я исправил ошибки и улучшил синтаксис

0
ответ дан 24.11.2019, 12:12