Ayuda: con sustitución de funciones

Iniciado por do-while1, 5 Marzo 2013, 17:53 PM

0 Miembros y 3 Visitantes están viendo este tema.

do-while1

Buen día, tengo una duda. En el instituto nos han pedido un programa que nos de la media aritmética de varios valores. Hice el siguiente código:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
main()
{
    int n,i;
    float c,ma,*a;
     

    printf("Introduce n\n");
    scanf("%d",&n);
    a=(float*)malloc(sizeof(float)*n);
    printf("Digita los %d numeros\n",n);
    for(i=0;i<n;i++){
                     scanf("%f",&a[i]);
                     }
    printf("Los %d numeros que ingresaste son:\n",n);
    for(i=0;i<n;i++){
                     printf("%f\n",a[i]);
                     }
    c=0;
    for(i=0;i<n;i++){
                       c+=a[i];
                       }
    ma=c/n;
    printf("La media es: %f\n",ma);
                                                       
getch();
}


El programa ya está funcionando como el profesor quería, excepto por una cosa, a pesar de que me aplaudió el uso del arreglo de números no me ha permitido usar la función sizeof así como tampoco  la función malloc dentro del programa pues dice "aun no las hemos implementado junto al resto de la clase" ^^ y me ha obligado a cambiar el código con funciones que ya he usado en clase, pero,  el problema es que no encuentro función alguna que le pueda quedar al programa.
Se podría usar algo más básico y que no genere muchos cambios en el código?

0xDani

Usa un array estatico, o un VLA (Variable Length Array) y le dices a tu profesor que estas compilando en C99!

Personalmente yo le diria que le den por culo que no me corte las alas y me deje usar cosas mas avanzadas si tengo mas nivel. Vamos que pasaria de el, basicamente.

Con el VLA seria asi:

printf("Introduce n\n");
    scanf("%d",&n);
    float a[n]; /* Recuerda que la primera declaracion de "a" debe ser esta,
                       quita la de mas arriba */


Cualquier compilador estandar en modo C99 te lo debe aceptar.

Saludos.

PD: De verdad estudiais C en el instituto? Vives en España?
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

leosansan

#2
Cita de: do-while1 en  5 Marzo 2013, 17:53 PM

Buen día, tengo una duda. En el instituto nos han pedido un programa que nos de la media aritmética de varios valores.....................


Pues a lo simple:

Código (cpp) [Seleccionar]
#include<stdio.h>

int main()
{
    int n,i;
    float num,ma=0;
    printf("Introduce total de numeros: ");
    scanf("%d",&n);
    for(i=0;i<n;i++){
        printf("Digita el numero %d: ",i+1);
        scanf("%f",&num);
        ma+=num;
    }
    printf("La media es: %g\n",ma/n);
getch();
return 0;
}




Pero se me hace algo "elemental" para tu nivel.

Saluditos!. ...

do-while1

#3
Cita de: 0xDani en  5 Marzo 2013, 19:11 PM
Personalmente yo le diria que le den por culo que no me corte las alas y me deje usar cosas mas avanzadas si tengo mas nivel. Vamos que pasaria de el.

PD: De verdad estudiais C en el instituto? Vives en España?

jajajaja ganas no me faltan de decirselo, en grados anteriores un maestro que originalmente nos inculcaba taller de programación nos enseñó C++ y claro el nos decía las funciones más básicas pero también nos mostraba como un plus funciones para alguien más  avanzado, no digo que yo lo sea haha pero pues no cae nada mal querer ver más allá aunque apenas seas un estuidiante.

Y por lo otro, no vivo en España :D  Soy de México y ya sea escuela pública o privada en el plan de estudio se exige ver aunque sea por mínimo C, pero aquí en mi instituto ya han abusado en cuanto a ver este lenguaje, yo hubiera preferido cuando menos ver Basic o C# jajaja

Muchas Gracias

do-while1

Cita de: leosansan en  5 Marzo 2013, 19:11 PM

Pero se me hace algo "elemental" para tu nivel.

jajaja creo que anteriormente me habías ayudado igual con algo muy elemental pero es que muchas veces me pasa que al estár tan "concentrado" jaja se me pasan esos detalles. xD
Y bueno espero en verdad tener un buen nivel en C al menos tener una satisfacción personal jajaja

Muchas gracias

amchacon

#5
Otra forma de implementarlo sin vectores. Gracias a la magia de los punteros:

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

struct Eslabon
{
   int N;
   Eslabon* Anterior;
};
int main()
{
   Eslabon* Numero = (Eslabon*)malloc(sizeof(Eslabon));
   Eslabon* Buffer;

   int Cantidad;
   int Total = 0;

   Numero->Anterior = NULL;

   do
   {
       printf("Inserta numeros, introduce 0 para finalizar: ");
       scanf("%d",&Numero->N);

       if (Numero->N != 0)
       {
           Buffer = Numero;
           Numero = (Eslabon*)malloc(sizeof(Eslabon));
           Numero->Anterior = Buffer;
       }
   }while(Numero->N != 0);

   // Desliamos la cadena

   Cantidad = Numero->N;

   while (Numero->Anterior != NULL)
   {
       Numero = Numero-> Anterior;
       Cantidad += Numero->N;
       Total++;
   }

   printf("La media es %d ",Cantidad/Total);
   getchar();

return 0;
}
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

leosansan

#6
Cita de: amchacon en  5 Marzo 2013, 20:59 PM
Una forma de implementarlo sin vectores. Gracias a la magia de los punteros:

.....................................

¡La de dios!, que pasada. ¿Pero no has leído que no le dejan usa " ni " malloc?. . Creo que se trataba de hacerlo "tipo" principiantes, ya que sólo pedía calcular la media, para nada se hablaba de "guardar" los datos entrantes.

Eso si amchacon, pedazo de código ´pa matar moscas a cañonazos .......

Saluditos!. ...


amchacon

Para esta situación no era lo más adecuado, pero ya que todos ponían su código yo también quería xDDD

Esta bien para las situaciones en las cuales, no puedas saber cuantos numeros vas a guardar.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

do-while1

Pues resulta, chicos, que el "profe" me ha rechazado una vez más el código por que le faltó el arreglo jajajaja.

amchacon

printf("Introduce n\n");
    scanf("%d",&n);
    float a[n]; /* Recuerda que la primera declaracion de "a" debe ser esta,
                       quita la de mas arriba */

No te sirve esto?. Solo te falta llenar los datos y calcular la media.
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar