Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ERIK546

#21
Hola, ya he corregido el código para la media aritmética y he proseguido con la media geométrica. Les dejo el código para corroborarlo:

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

int main(int argc, char *argv[])
{
    int n,i,c;
    float ma;
    int *a; 
 
    printf("Programa que calcula la moda, mediana,  media aritmetica y media geometrica de n numeros\n");
    printf("Introduce n\n");
    scanf("%d",&n);
    a=(int*)malloc(sizeof(int)*n);
    printf("Introduce los %d numeros\n",n);
    for(i=0;i<n;i++){
                     scanf("%d",&a[i]);
                     }
    printf("Los %d numeros son:\n",n);
    for(i=0;i<n;i++){
                     printf("%d\n",a[i]);
                     }
    //Media Aritmetica 
    c=0;
    for(i=0;i<n;i++){
                       c+=a[i];
                       }
    ma=c/n;
    printf("La media aritmetica es: %f\n",ma);
                   
  system("PAUSE");
  return 0;
}

Ahora con la media geométrica consiste en: los n números multiplicarlos entre sí y obtener del resultado; su raíz n-ésima. Hasta ahora he avanzado un poco en el problema y me he dado cuenta que tengo un error al momento de obtener la raíz n-ésima. Les dejo el código para que me rectifiquen en la función para obtener la raíz n-ésima ya que el parecer el lenguaje C, no acepta lo que yo estoy haciendo:

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

int main(int argc, char *argv[])
{
    int n,i,c,d;
    float ma,mg;
    int *a; 
 
    printf("Programa que calcula la moda, mediana,  media aritmetica y media geometrica de n numeros\n");
    printf("Introduce n\n");
    scanf("%d",&n);
    a=(int*)malloc(sizeof(int)*n);
    printf("Introduce los %d numeros\n",n);
    for(i=0;i<n;i++){
                     scanf("%d",&a[i]);
                     }
    printf("Los %d numeros son:\n",n);
    for(i=0;i<n;i++){
                     printf("%d\n",a[i]);
                     }
    //Media Aritmetica 
    c=0;
    for(i=0;i<n;i++){
                       c+=a[i];
                       }
    ma=c/n;
    printf("La media aritmetica es: %f\n",ma);
   
    //Media Geométrica
    d=0;
    for(i=0;i<n;i++){
                     d*=a[i];
                     }
    mg=pow(c,(1/n));
    printf("La media geometrica es: %f\n",mg);
                   
  system("PAUSE");
  return 0;
}
#22
Hola, esta vez solicito la ayuda de los expertos por el siguiente problema en C; que debe calcular como dice el título; la moda, mediana, media aritmética y media geométrica de n numeros en C; El ingresar los n números no ha sido problema, ya que los he guardado en un arreglo. Sin embargo se me ha complicado realizar las acciones necesarias. He iniciado por la que considero yo la más sencilla, sería la media aritmética; que como ya saben consiste en sumar los n números del arreglo y dividir el resultado entre n. Sin embargo no logra hacer lo solicitado. Les dejo mi avance y si me podrían dar ideas para realizar las otras acciones se los agradecería mucho.

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

int main(int argc, char *argv[])
{
    int n,i,c;
    float ma;
    int *a;
    printf("Programa que calcula la moda, mediana,  media aritmetica y media geometrica de n numeros\n");
    printf("Introduce n\n");
    scanf("%d",&n);
    a=(int*)malloc(sizeof(int)*n);
    printf("Introduce los %d numeros\n",n);
    for(i=0;i<n;i++){
                     scanf("%d",&a[i]);
                     }
    printf("Los %d numeros son:\n",n);
    for(i=0;i<n;i++){
                     printf("%d\n",a[i]);
                     }
    //Media Aritmetica
    for(i=0;i<n-1;i++){
                     c=0;
                     c+=a[i]+a[i+1];
                     }
    ma=c/n;
    printf("La media aritmetica es: %d\n",ma);
                   
  system("PAUSE");
  return 0;
}
#23
Cita de: The Swash en 20 Junio 2012, 23:15 PM
Hola,

Tienes 2 problemas:

  • Utilizas mal el término de intercambiar valor entre 2 variables.
  • Utilizas mal el término de punteros.

Tus errores recaen en la variable que le pasas al "scanf", debe ser un puntero. Entonces debe ser "&arreglo(i)" y en la utilización incorrecta del intercambio de variables.

Te recomiendo tratar de indentar mejor, mira que se ve un poco más claro.

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

int main(int argc, char *argv[])
{

      int i,j, aux;
      int arreglo[5];
      printf("Programa que ordena de menor a mayor 5 numeros e imprime los impares\n");
      printf("Introduce los numeros\n");
      for(i=0;i<=4;i++)
      {
          scanf("%d",&arreglo[i]);
      }
      for(i=0;i<=4;i++)
      {
          for(j=i+1;j<=4;j++)
          {
              if(arreglo[i]>arreglo[j])
              {
                  aux = arreglo[i];
                  arreglo[i] = arreglo[j];
                  arreglo[j] = aux;
              }
          }
      }
      for(i=0;i<=4;i++)
      {
          printf("El ordenamiento queda de la siguiente manera: %d\n",arreglo[i]);
      }
      for(i=0;i<=4;i++)
      {
          if((arreglo[i]%2)!=0)
          {
              printf("Los numeros impares son: %d\n",arreglo[i]);
          }
      }
      system("PAUSE");
      return 0;
}


Un saludo,
Iván Portilla.
Muchas gracias ha corrido a la perfección.
#24
Cita de: maxim_o en 20 Junio 2012, 22:31 PM
No lo he mirado mucho... pero asi a ojo parece un error en la asignacion en el if...
Código (cpp) [Seleccionar]

arreglo[i]=aux;
arreglo[i]=arreglo[j];
arreglo[j]=aux;


Código (cpp) [Seleccionar]

aux=arreglo[i];
arreglo[i]=arreglo[j];
arreglo[j]=aux;

Lo he intentado pero sigue marcándome dicho error.
#25
Hola a todos, como dice el título no es un programa muy complicado sin embargo no he podido hacer ejecutar de una manera correcta al marcarme error en el ejecutable. Solicito su ayuda les dejo el código, supongo que el problema se encuentra en la dimensión del arreglo. Gracias de antemano.

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

int main(int argc, char *argv[])
{
   
       int i,j, aux;
       int arreglo[5];
       printf("Programa que ordena de menor a mayor 5 numeros e imprime los impares\n");
       printf("Introduce los numeros\n");
       for(i=0;i<=4;i++){
                        scanf("%d",arreglo[i]);
                         }
       for(i=0;i<=4;i++){
                         for(j=i+1;j<=4;j++){
                                             if(arreglo[i]>arreglo[j]){
                                                                       arreglo[i]=aux;
                                                                       arreglo[i]=arreglo[j];
                                                                       arreglo[j]=aux;
                                                                       }
                                             }
                         }
       for(i=0;i<=4;i++){
                         printf("El ordenamiento queda de la siguiente manera: %d\n",arreglo[i]);
                         }
       for(i=0;i<=4;i++){
                         if((arreglo[i]/2)!=0){
                                               printf("Los numeros impares son: %d\n",arreglo[i]);
                                               }
                         }
 
  system("PAUSE");
  return 0;
}
#26
Hola a todos, gracias por su ayuda en la realización de éste programa que tiene como objetivo pedir los datos de "n" personas; entre esos datos su fecha de nacimiento y ordenar los datos de acuerdo a su fecha de nacimiento. Les dejo ahora el código terminado para que sea de apoyo a la comunidad;


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
        char nombre[100];
        int calificacion;
        int lista;
        int c;
        int dia;
        int mes;
        int ano;
       } alumno;


int main(){
alumno *ALUMNO;
alumno aux;
int n,l,i,j,m;
printf("Introduce el numero de alumnos que se tomaran los datos\n");
scanf("%d",&n);
ALUMNO=(alumno *) malloc (sizeof(alumno)*n);                                                                                                                   
for(l=0;l<n;l++){
                 printf("Introduce el nombre del alumno %d\n",l+1);
                 scanf("%s",ALUMNO[l].nombre);
                 printf("Introduce la calificacion del alumno %d\n",l+1);
                 scanf("%d",&ALUMNO[l].calificacion);
                 printf("Introduce el numero de lista del alumno %d\n",l+1);
                 scanf("%d",&ALUMNO[l].lista);
                 printf("Introduce los datos de la fecha de nacimiento del alumno %d\n",l+1);
                 printf("Introduce el dia\n");
                 scanf("%d",&ALUMNO[l].dia);
                 printf("Introduce el mes\n");
                 scanf("%d",&ALUMNO[l].mes);
                 printf("Introduce el año\n");
                 scanf("%d",&ALUMNO[l].ano);
                 }
                 
                                                                 
for(l=0;l<n;l++){
                   printf("El nombre del alumno %d es: %s\n",l+1,ALUMNO[l].nombre);
                   printf("La calificacion del alumno %d es: %d\n",l+1,ALUMNO[l].calificacion);
                   printf("El numero de lista del alumno %d es: %d\n",l+1,ALUMNO[l].lista);
                   printf("La fecha de nacimiento del alumno %d es: %d-%d-%d\n",l+1,ALUMNO[l].dia,ALUMNO[l].mes,ALUMNO[l].ano);
                   }
for(l=0;l<n;l++){
                 ALUMNO[l].c=(ALUMNO[l].ano*10000)+(ALUMNO[l].mes*100)+(ALUMNO[l].dia*1);
                 }
for(l=0;l<n;l++){
                 for(m=l+1;m<=n;m++)
                                    {
                                    if(ALUMNO[l].c>ALUMNO[m].c){
                                               aux.c=ALUMNO[l].c;
                                               strcpy(aux.nombre,ALUMNO[l].nombre);
                                               aux.calificacion=ALUMNO[l].calificacion;
                                               aux.lista=ALUMNO[l].lista;
                                               aux.dia=ALUMNO[l].dia;
                                               aux.mes=ALUMNO[l].mes;
                                               aux.ano=ALUMNO[l].ano;
                                               
                                               ALUMNO[l].c=ALUMNO[m].c;
                                               strcpy(ALUMNO[l].nombre,ALUMNO[m].nombre);
                                               ALUMNO[l].calificacion=ALUMNO[m].calificacion;
                                               ALUMNO[l].lista=ALUMNO[m].lista;
                                               ALUMNO[l].dia=ALUMNO[m].dia;
                                               ALUMNO[l].mes=ALUMNO[m].mes;
                                               ALUMNO[l].ano=ALUMNO[m].ano;
                                               
                                               ALUMNO[m].c=aux.c;
                                               strcpy(ALUMNO[m].nombre,aux.nombre);
                                               ALUMNO[m].calificacion=aux.calificacion;
                                               ALUMNO[m].lista=aux.lista;
                                               ALUMNO[m].dia=aux.dia;
                                               ALUMNO[m].mes=aux.mes;
                                               ALUMNO[m].ano=aux.ano;
                                                                     }
                                               }
                 }
for(l=0;l<n;l++){
                 printf("\n%s:\n\tNo. de lista: %d\n\tCalificación: %d\n\tAño: %d\n\tMes: %d\n\tDia: %d\n",ALUMNO[l].nombre,ALUMNO[l].lista,ALUMNO[l].calificacion,ALUMNO[l].ano,ALUMNO[l].mes,ALUMNO[l].dia);
                 }

free(ALUMNO);

system("PAUSE");

return 0;
}
#27
Hola a todos gracias por su ayuda, se ha logrado ejecutar el programa a la perfección. Sin embargo el programa que ocupo esta un tanto lejos de estar terminado, ya que aparte de esos datos que se han puesto; ocupo ingresar la fecha de nacimiento de estos alumnos. Para ello he decidido poner una nueva variable en la estructura llamada "fecha"; y a su vez una nueva variable de la estructura llamada "FECHA" como un arreglo de 3 dimensiones se podría decir. Para que al ingresar los datos que corresponden a la fecha los guarde en dicho arreglo en la variable de la estructura de la siguiente manera.

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

struct alumno{
        char nombre[100];
        int calificacion;
        int lista;
        int fecha;
    };

int main(){
struct alumno ALUMNO[100];
struct alumno FECHA[100][100][100];
int n,l,i,j,k;
printf("Introduce el numero de alumnos que se tomaran los datos\n");
scanf("%d",&n);                                                                                                                   
for(l=0;l<n;l++){
                 printf("Introduce el nombre del alumno\n");
                 scanf("%s",ALUMNO[l].nombre);
                 printf("Introduce la calificacion del alumno\n");
                 scanf("%d",&ALUMNO[l].calificacion);
                 printf("Introduce el numero de lista del alumno\n");
                 scanf("%d",&ALUMNO[l].lista);
                 }
for(i=0;i<n;i++){
                 for(j=0;j<n;j++){
                                  for(k=0;k<n;k++){
                                                   printf("Inttoduce la fecha de nacimiento del alumno con el formato DD-MM-ANO");
                                                   scanf("%d-%d-%d",&FECHA[i][j][k].fecha);
                                                   }
                                  }
                 }
                                                                 
for(l=0;l<n;l++){
                   printf("El nombre del alumno es: %s\n",ALUMNO[l].nombre);
                   printf("La calificacion del alumno es: %d\n",ALUMNO[l].calificacion);
                   printf("El numero de lista es: %d\n",ALUMNO[l].lista);
                   }


system("PAUSE");

  return 0;
}


Tengo duda sobre la declaración de la variable "fecha" en la estructura ya que no se maneja como un arreglo. Agradecería su ayuda ya que lo compila pero al ejecutar marca un error ".exe".Gracias por todo.
#28
Cita de: ERIK546 en 18 Junio 2012, 04:46 AM
Hola gracias por responder, sobre lo que dijiste de usar una variable tipo apuntador en la estructura ¿Cómo debería darle dimensión? ¿Sería darle dimensión con "malloc" a la variable "nombre" pero ya en el "main"? Me gustaría saber como lo harías, gracias por todo.
Gracias he encontrado el error, de esta forma me ha corrido sin problemas:

struct alumno{
        char nombre[100];
        int calificacion;
        int lista;
    };
#29
Cita de: The Swash en 18 Junio 2012, 02:40 AM
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.

STANHMAL me la ganaste! Además de que me certificaste estar en lo correcto.

Hola gracias por responder, sobre lo que dijiste de usar una variable tipo apuntador en la estructura ¿Cómo debería darle dimensión? ¿Sería darle dimensión con "malloc" a la variable "nombre" pero ya en el "main"? Me gustaría saber como lo harías, gracias por todo.
#30
Cita de: STANHMAL en 18 Junio 2012, 02:38 AM
Hola que tal, el problema esta en la estructura, ya que tienes nombre para que solo guarde un carácter.

error :


struct alumno{
        char nombre;
        ...
    };


solucion :


struct alumno{
        char nombre[20];
        ...
    };


y el otro problema es que cuando lees la cadena se la mandas con el ampersand &,a para las cadenas no es necesario.

error :


...
printf("Introduce el nombre del alumno\n");
scanf("%s",&ALUMNO[l].nombre);
...


solución :


...
printf("Introduce el nombre del alumno\n");
scanf("%s",ALUMNO[l].nombre);
...


$4!u2

Muchas gracias por tu respuesta STANHMAL, he corregido el error y ahora arroja resultados pero tengo una nueva problemática con el programa: Te dejo el código modificado para que compruebes que he cambiado lo que señalas:

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

struct alumno{
        char nombre[100];
        int calificacion[100];
        int lista[100];
    };

int main(){
struct alumno ALUMNO[100];
int n,l;
printf("Introduce el numero de alumnos que se tomaran los datos\n");
scanf("%d",&n);                                                                                                                   
for(l=0;l<n;l++){
                 printf("Introduce el nombre del alumno\n");
                 scanf("%s",ALUMNO[l].nombre);
                 printf("Introduce la calificacion del alumno\n");
                 scanf("%d",ALUMNO[l].calificacion);
                 printf("Introduce el numero de lista del alumno\n");
                 scanf("%d",ALUMNO[l].lista);
                 }
for(l=0;l<n;l++){
                   printf("El nombre del alumno es: %s\n",ALUMNO[l].nombre);
                   printf("La calificacion del alumno es: %d\n",ALUMNO[l].calificacion);
                   printf("El numero de lista es: %d\n",ALUMNO[l].lista);
                   }

system("PAUSE");

  return 0;
}

El problema ahora reside que al ejecutarse el programa lo que imprime de la variable "ALUMNO[l].calificacion" y la variable "ALUMNO[l].lista" es al parecer la dirección de memoria de dicha variable y no el valor que mandé guardar en el ciclo anterior con el "scanf". No se porque ocurre esto, gracias por todo espero que me puedan ayudar.