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 - leosansan

#1171
Con system creo que necesitas cstdlib:
Código (cpp) [Seleccionar]
#include<iostream>
#include <cstdlib>
using namespace std;
    int main(){
    double suma=0,n;
    int contador=0;
    cout << "Introduzca numero: " ;
    cin>>n;
    while(n>0){
        suma+=n;
        contador+=1;
        cout << "Introduzca numero: " ;
        cin>>n;
    }
    cout<<suma/contador<<endl;
    system("pause");
    return 0;
}

Saludos!.
#1172
Programación C/C++ / Re: RETOS C++
8 Noviembre 2012, 22:37 PM
Cita de: Stakewinner00 en 20 Septiembre 2012, 18:20 PM
15-(Similar al anterior)Crear un programa que obtenga el numero phi o aureo a partir de la serie de Fibonacci (el bucle tiene que tener un minimo de 30 ciclos) .
15p
CitarPues aquí está una posible solución:
Código (cpp) [Seleccionar]
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
    long num,cont=0;
    long f0=0,f1=1;
    while (cont<=30)
        {
            long f2 = f0 + f1;
            f0 = f1;
            f1 = f2;
            if (cont==30) cout << (float) f1/f0;
            cont++;
        }
   return 0;
}

Saludos!. ... y puntos, puntos
#1173
CitarTienes varios errores más, como en algunos printf, en poner en lugar de sueldo la Zona, usar el formato %d en los case en lugar de %c, ya que se va a tomar una letra la ausencia del caso default. En fin, creo que ya te funciona:
Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
#include<conio.h>
main()
{
  /* Mis variables */
  int horas;
float ZonA=62.33, ZonaB=60.57, ZonaC=59.08, sueldo;
char opc;
do
{
  /* Lectura del número de horas trabajadas */
  printf("Ingrese el numero de horas trabajadas:" );
  scanf("%d", &horas);
  printf("Introduzca la zona geografica que le corresponda:\n" );
  printf("\n a. ZonA. \n b. ZonaB. \n c. ZonaC. \n d. Salir ");
   /*system("cls");*/
   opc=getche();
  switch(opc)
  {
            case'a':("Selecciono ZonA\n");
            scanf("%c", &ZonA);
            sueldo = ZonA * horas;
            printf("\nSu sueldo es: %1.2f\n\n ", sueldo);
            system("pause");
            break;

            case'b':("Selecciono ZonaB \n");
            scanf("%c", &ZonaB);
            sueldo =ZonaB * horas;
            printf("\nSu sueldo es: %1.2f\n\n ", sueldo);
            system("pause");
            break;

            case'c':("Selecciono ZonaC \n");
            scanf("%c", &ZonaC);
            sueldo = ZonaC * horas;
            printf("\nSu sueldo es: %1.2f\n\n ",sueldo);
            system("pause");
            break;

            case'd': printf("\n\nAdios\n");
             system("pause");
                 break;
                     printf("\n\n OpcionInvalida");
            default: printf("\n\n OpcionInvalida\t");break;
    }/*Fin dela Selección Múltiple*/

    }while (opc!='d');
  return 0;
}

Saludos!.
#1174
Cita de: NathanD en  7 Noviembre 2012, 01:27 AM
Hola buenas, necesito en un programa manejar valores más altos que los máximos de los int (ya sabéis, 2^31 - 1). Más concretamente, necesito manejar valores entre 1.000.000 y 9.999.999.
CitarPuedes usar la libreria de C: #include <inttypes.h>. En ella el entero en lugar de ser int es uint64_t y el formato %llu, en lugar de %d:
Código (cpp) [Seleccionar]

#include <stdio.h>
#include <inttypes.h>
//Definición de funciones

int cantidadDigitos(int num);
int sumaDigitos(int num);
int ultimoDigito(int num);
void comprobaciones(int numero);

//Cuerpo del programa

int main()
{
      //Número de tarjeta de crédito
    uint64_t numero;
   printf("Mete el numero de la tarjeta de credito: ");

   //Hasta meter un número positibo, no saldrá del bucle
   do{
      scanf("%llu", &numero);
      if(numero < 0)
      {
         printf("\nEl numero tiene que ser positibo! Metelo otra vez: ");
      }
   }while(numero < 0);

   comprobaciones(numero);

   printf("\nIntro para salir...");
   fflush(stdin);
   getchar();

   return 0;
}

int cantidadDigitos(int num)
{
   int i = 0;            //Para contar el número de dígitos
   int numAux = num;      //Variable auxiliar

   while(numAux > 0)      //Hasta que no sea 0...
   {
      numAux /= 10;      //...pasamos al siguiente dígito
      i++;            //...y un dígito más que tenemos
   }

   return i;
}

int sumaDigitos(int num)
{
   int suma = 0;            //para guardar la suma entre los 9 primeros digitos del numero de la tarjeta
   int divisor = 1000000000;   //Para sacar los dígitos de uno en uno, empezando por el más significativo
   int resto = num;         //auxiliar, para avanzar de dígito en dígito
   int ultimo_digito = 0;         //Batuketaren azken digitua gordeko duen aldagaia
   int i;                     //Buklerako

   for(i=0; i<9; i++)
   {
      suma += (resto/divisor);      //la suma entre los dígitos
      resto = resto % divisor;      //pasamos al siguiente dígito
      divisor /= 10;                  //y para sacar el siguiente digito
   }

   ultimo_digito = ultimoDigito(suma);      //El último dígito de la suma

   return ultimo_digito;
}

int ultimoDigito(int num)
{
   int digito = 0;

   digito = num % 10;

   return digito;
}

void comprobaciones(int numero)
{
   int cantidad = 0;
   int suma_digitos = 0;

   //Calculamos en número de dígitos
   cantidad = cantidadDigitos(numero);

   //Si la cantidad de dígitos es correcta (10)
   if(cantidad == 10)
   {
      printf("\nLa cantidad de digitos es correcta.\n");

      //Si el último dígito de la suma de los primeros 9 dígitos es igual al último dígito de la tarjeta:
      if(sumaDigitos(numero) == ultimoDigito(numero))
      {
         printf("\nSe cumplen las condiciones.\n");
      }
      else
      {
         printf("\nEl numero de tarjeta de credito no cumple las condiciones.\n");
      }
   }
   //Si el número de dígitos no es el correcto
   else
   {
      printf("\nEl numero de digitos no es el adecuado.\n");
   }
}

Saludos!.
#1175
Cita de: Jaes en  6 Noviembre 2012, 19:26 PM
Esto imprime todas las combinaciones de letras mayus/minus con números
CitarPerdona mi observación, pero construir una función que lo haga todo no tiene como mucho sentido, para eso lo incluyes en la función main.
En el lado opuesto está mi función, que hace algo repetitivo y que puede ser invocada cada vez desde main. Fíjate en la simplicidad: un solo for y nigún if.
Con números, mayúsculas y minúsculas quedaría así:
Código (cpp) [Seleccionar]
#include <stdio.h>

void uno(int MIN, int MAX) ;
void uno(int MIN, int MAX) {
int i;
for(i=MIN; i<=MAX; i++) {
printf("%c   ", i);
}
}

int main(){
    int  MIN1 =48,MAX1 =57,MIN2=65,MAX2= 90,MIN3=97,MAX3= 122;
    uno(MIN1,MAX1);
    puts("\n");
    uno(MIN2,MAX2);
    puts("\n");
    uno(MIN3,MAX3);
    return 0;
}

Saludos!.
#1176
Programación C/C++ / Re: función random
6 Noviembre 2012, 20:18 PM
Cita de: rir3760 en  6 Noviembre 2012, 17:49 PMEn tu programa el uso de la sentencia "continue;" no es necesario ya que, si revisas con cuidado, es la ultima sentencia del bucle.
Pardillo, que soy un pardillo.....

CitarY los dos cambios al contador se pueden reducir a uno si se utiliza un bucle "while" o "do ... while"
Eso ya es lo clásico de un for o un while o do while, pero se agradece la observación.

Citar
   size_t num_opers = sizeof opers;
   size_t i;

Me asalta la duda, tonta supongo: ¿por qué usar size_t en lugar de int?.
Saludos!.
#1177
Programación C/C++ / Re: función random
6 Noviembre 2012, 16:23 PM
Cita de: m@o_614 en  6 Noviembre 2012, 00:45 AM
una última pregunta en el else de tu código pusiste i-- ¿por qué? no entiendo para qué pusiste ese contador
CitarSi resulta un valor no válido -si entra en el else- habrá que descontarlo, de ahí el i--, si no tendrías menos de cinco valores, ya que se contarían también los valores no válidos
Saludos!.
#1178
Cita de: Oblivi0n en  5 Noviembre 2012, 22:31 PM
.La complejidad de mi algoritmo es simplemente O(n). ( ya sé que no estamos discutiendo eficiencia)
CitarEso no lo dudo, pero te recuerdo que el algoritmo, tal como lo planteates daría para la serie de números:
121 174 39 158 144 167 76 80 112 167 59 152 161 136 129
max=174    cuasi_max=121, cuando este último debería ser 167.
De ahí la introducción de :
Código (cpp) [Seleccionar]
else if (a[i]>cuasi_maxi ) {cuasi_maxi=a[i];}
Saludos!.
#1179

....... y la salida:


Introduce la cantidad: 1.4
Monedas de 0.25: 5
Monedas de 0.10: 1
Monedas de 0.05: 0 <==aqui deberia ser 1
Monedas de 0.01: 4 <==aqui deberia ser 0

CitarSalida que se obtiene con la ligera modiicación de los valores M, como comenté por los redondeos:
Código (cpp) [Seleccionar]

#include <stdio.h>

#define M1 0.2499
#define M2 0.099
#define M3 0.049
#define M4 0.0099

int main() {

int m1, m2, m3, m4;
float cantidad;

printf("Introduce la cantidad: ");
scanf("%f", &cantidad);

m1=(int)(cantidad/M1);
cantidad-=m1*M1;

m2=(int)(cantidad/M2);
cantidad-=m2*M2;

m3=(int)(cantidad/M3);
cantidad-=m3*M3;

m4=(int)(cantidad/M4);
cantidad-=m4*M4;

printf("Monedas de 0.25:\t%d\nMonedas de 0.10:\t%d\nMonedas de 0.05:\t%d\n"
   "Monedas de 0.01:\t%d\n", m1, m2, m3, m4);

return 0;
}

Muy aguda la solución !!!.
Saludos!.

#1180
Programación C/C++ / Re: función random
5 Noviembre 2012, 21:38 PM
CitarTal como tienes planteado el if sólo sería cierto en los dos casos en que debe ser falso. Además hay que tener en cuenta si el aleatorio genera un valor no válido, lo que está contemplado en el "else" y para que lo veas he puesto "OTRO", que puedes quitar una vez entiendas como funciona:
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define OPERACIONES 5

int main()
{
    int i,numero1,numero2,resultado;
    char operacion;
    srand(time(0));
    for(i=0;i<OPERACIONES;i++)
    {
        numero1 = rand()%11;
        numero2 = rand()%11;
        operacion = rand()% 6+42;

        if(operacion==42 || operacion==43  || operacion==45 || operacion==47)
            {
                printf("%d %c %d = ",numero1,operacion,numero2);
                scanf("%d",&resultado);
            }
        else
            {
                i--;puts ("Otro");continue;
            }
    }
    return 0;
}

Saludos!.