¿Error en cabecera de funciones?

Iniciado por Constantinoplero, 17 Diciembre 2011, 23:58 PM

0 Miembros y 1 Visitante están viendo este tema.

bdoX

#10

#include <stdio.h>

int EsPrimo (int numero);
//int EsPrimo (int); // también se puede de esta forma

int main ( )
{
   int numero;

   printf("Dame un numero: ");
   scanf("%d", &numero);

   if (EsPrimo (numero) == 1)
       printf("Es un numero primo");

   else
       printf("No es un numero primo");
   
   setbuf (stdin, NULL);
   getchar ( );
   return 0;

}

int EsPrimo (int numero)
{
   int i, divisor, v;
   
   v = 1;
   i = (numero - 1);

   do
   {
       divisor = (numero % i);
       i--;
   } while ((i > 1) && (divisor != 0));
   
   if ( divisor == 0 )
       v = 0;

   return v;
}

Constantinoplero

¿Y alguno sabe por qué el argumento por referencia (perimetro) no me sale bien al ejecutar el programa? Compila pero es obvio que ese no es el perímetro...

Siento preguntar tanto pero estoy teniendo problemas para entender esto.

#include <stdio.h>

unsigned calcular_area(unsigned base, unsigned lado, unsigned &perimetro);

int main()

{
   unsigned lado, base, p;

   printf("Dime la base de tu rectangulo: ");
   scanf("%u", &base);

   printf("Dame el lado de tu rectangulo: ");
   scanf("%u", &lado);



   printf("Tu area es: %u y su perimetro %u", (calcular_area(base, lado, perimetro)), p);
}

unsigned calcular_area(unsigned base, unsigned lado, unsigned &perimetro)

{
   unsigned area;

   area=base*lado;
   perimetro=lado*2+base*2;

   return area;

}
Más que buenos principios prefiero mejores finales.

bdoX

#12
Perimetro no está declarado dentro de la main(). No se como es que te compiló

Ecá está en C++ con referencia

Código (cpp) [Seleccionar]

#include <iostream>

unsigned calcular_area (unsigned base, unsigned lado, unsigned &perimetro);

using namespace std;

int main ( )
{
   unsigned lado, base, p;
   
   cout << "Dime la base de tu rectangulo: ";
   cin >> base;
   
   cout << "Dame el lado de tu rectangulo: ";
   cin >> lado;
   
   cout << "Tu area es: " << calcular_area (base, lado, p) << " y su perimetro es: " << p << endl;
   
   cin.ignore ( );
   cin.get ();

   return 0;
}

unsigned calcular_area (unsigned base, unsigned lado, unsigned &perimetro)
{
   unsigned area;

   area = (base * lado);
   perimetro = (lado * 2) + (base * 2);

   return area;
}


En C++ pero con desreferencia

Código (cpp) [Seleccionar]

#include <iostream>

unsigned calcular_area (unsigned base, unsigned lado, unsigned *perimetro);

using namespace std;

int main ( )
{
   unsigned lado, base, p;
   
   cout << "Dime la base de tu rectangulo: ";
   cin >> base;
   
   cout << "Dame el lado de tu rectangulo: ";
   cin >> lado;
   
   cout << "Tu area es: " << calcular_area (base, lado, &p) << " y su perimetro es: " << p << endl;
   
   cin.ignore ( );
   cin.get ();
   return 0;
}

unsigned calcular_area (unsigned base, unsigned lado, unsigned *perimetro)
{
   unsigned area;

   area = (base * lado);
   *perimetro = (lado * 2) + (base * 2);

   return area;
}


Y acá está en C


#include <stdio.h>

unsigned calcular_area (unsigned base, unsigned lado, unsigned *perimetro);

int main( )
{
   unsigned lado, base, p;
   
   printf ( "Dime la base de tu rectangulo: " );
   scanf ( "%u", &base );

   printf ( "Dame el lado de tu rectangulo: " );
   scanf ( "%u", &lado );

   printf ( "Tu area es: %u y su perimetro %u", calcular_area (base, lado, &p), p );
   
   setbuf (stdin, NULL)
   getchar ( );
   return 0;
}

unsigned calcular_area (unsigned base, unsigned lado, unsigned *perimetro)
{
   unsigned area;

   area = (base * lado);
   *perimetro = (lado * 2) + (base * 2);

   return area;
}


Saludos!!