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

#1201
Programación C/C++ / Re: ejercicio en C
29 Octubre 2012, 23:28 PM
Cita de: howaboutno en 29 Octubre 2012, 22:44 PM
muchas gracias!! ya he visto mis fallos que son bastantes, aun me queda por aprender, pero dicen que de los fallos se aprende :P
Muy bien, eso es aptitud positiva.
Saludos!.
#1202
Programación C/C++ / Re: ejercicio en C
29 Octubre 2012, 21:53 PM
Tienes que pasar a la función menú la variable opción por referencia, para luego usar el valor adecuado en la función main.
Por otro lado en los for puedes poner la condición terminar de leer frase al llegar al carácter nulo='\0'. Más o menos te quedaría así:

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <string.h>
    int menu(int *opcion);
    void mayus(char*);
    void minus(char*);
    int main()
    {       char frase[80];
            int opcion=0,op;
            printf("Introduce una frase \n");
            gets(frase);
            op=menu(&opcion);
            if (op==1)
                mayus(frase);
            if (op==2)
                minus(frase);
            return 0;
    }

    int menu(int *opcion)
    {
            printf("1.Pasar a mayusculas\n");
            printf("2.Pasar a minusculas\n");
            do
            {
            printf("Introduce opcion: \n");
                        scanf("%d",&opcion);
            }while(opcion<1 || opcion>2);
            return opcion;
    }

    void mayus(char *frase)
    {
           int t;
            for(t=0;frase[t]!='\0';t++)
                    frase[t]=toupper(frase[t]);
            printf("%s",frase);
    }

    void minus(char *frase)
    {
            int t;
            for(t=0;frase[t]!='\0';t++)
                    frase[t]=tolower(frase[t]);
            printf("%s",frase);
        }

Saludos!.
#1203
Quedaría por "ajustar "cositas" en el código, pero para que salgas de la duda y variando lo mínimo tu código, sería:
Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
    int empresa_particular_pensionista;
    float precio_de_la_factura;
    float consumo;
    printf("Introduzca la cantidad (en m^3):");
    scanf("%f", &consumo);
    if (consumo < 50.0)
        precio_de_la_factura = 0.50 * consumo;
    else if (consumo > 50.0)
        precio_de_la_factura = 0.75 * consumo;
    printf("Empresa (1),particular (2),pensionista (3): ");
    scanf("%d", &empresa_particular_pensionista);

    if(empresa_particular_pensionista==1)
        precio_de_la_factura*=0.73;
    if (empresa_particular_pensionista==2)
        precio_de_la_factura*=0.77;
    if (empresa_particular_pensionista==3)
        precio_de_la_factura*=0.88;
    if (precio_de_la_factura < 10.0)
        precio_de_la_factura = 10.0;
    printf("el precio de la factura es: %.2f euros\n", precio_de_la_factura);
    system("pause");
    return (EXIT_SUCCESS);
}

Saludos!.
#1204
Cita de: Caster en 28 Octubre 2012, 15:43 PM
pero el 4 no se como hacerlo, y queria que me dijerias a ver de que forma puedo hacerlo, no quiero codigo, solo como poder hacerlo, una idea para despues hacerlo yo

Tendras que obtener dias, horas minutos y segundos restantes a partir de los segundos de entrada. Por ejemplo:
Código (cpp) [Seleccionar]
dias = (int) segundos/(3600*24);
P.D: Revisa lo anterior, lo de numero entero de días en especial.

Y lo siguiente no lo mires hasta que no lo hallas resuelto tú:








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



int main()
{
uint64_t segundos;
double minutos;
double horas;
double dias;


printf("Porfavor introduzca los segundos: \n");
scanf("%llu", &segundos);

while(getchar() != '\n')
;

minutos = (double) segundos/60;


if (((int) minutos) != minutos)
printf("Numero entero de minutos: No\n");
else if (((int) minutos) == minutos)
printf("Numero entero de minutos: Si\n");

horas = (double) segundos/3600;

if (((int) horas) != horas)
printf("Numero entero de horas: No\n");
else if (((int) horas) == horas)
printf("Numero entero de horas: Si\n");

dias = (double) (segundos/(3600*24));

if (((int) dias) != dias)
printf("Numero entero de dias: No\n");
else if (((int) dias) == dias )
   printf("Numero entero de dias: Si\n");
   dias = (int) segundos/(3600*24);
   horas = (segundos - (int) dias *3600*24)/3600;
   minutos = (segundos -(int) dias *3600*24 - (int) horas*3600)/60;
   segundos = segundos -(int) dias *3600*24 - (int) horas*3600- (int) minutos*60;
   printf("\nNumero de dias: %g  \n",dias);
   printf("Numero de horas: %g  \n",horas);
   printf("Numero de minutos: %g  \n",minutos);
   printf("Numero de segundos: %llu  \n",segundos);
getchar();
return 0;
}
#1205
Programación C/C++ / Re: RETOS C++
28 Octubre 2012, 13:39 PM
En mi serie empieza desde 1:
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

int main()
{
   long num,cont=0;
   cout << "Numeros de Fibonacci:" <<  "  1 ";
   long f0=0,f1=1;
   while (cont<29)
       {
           long f2 = f0 + f1;
           cout << ", " << f2;
           f0 = f1;
           f1 = f2;
           cont++;
       }
}

No se entiende bien el siguiente.
#1206
Cita de: BatchianoISpyxolo en 26 Octubre 2012, 22:22 PM
Código modificado.
PD: cuidado con recoger valores numéricos por teclado  :D
;-) ;-) ;-) ;-) ;-) ;-) ;-) ;-)
Y yo que creía que mi código lo había hecho demasiado complejo.....
Desde que tenga tiempo trataré de implementarlo con recursividad, pero más "humanizado"  :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes: :rolleyes:

REEDITO:

Ya lo tengo con recursividad y sin la "artilleria pesada"  :rolleyes: :rolleyes:
Código (cpp) [Seleccionar]
#include <iostream>
#include <iomanip>
using namespace std;
int cont=0;
int dibuja (int a);
int main()
{
    int a,cont =0;
    cout << "Introduce un numero IMPAR: "<<endl;
    cin >> a;
    dibuja (a);
    return 0;
}
int dibuja (int a)
{
    if (a==0) return 1;
    for (int i=1;i<=a;i++)
                cout<<i<<" " ;
    cout <<endl << setw(cont) << " ";
    if (a<=3 )
                {cont ++;dibuja (a-1);}
    else
                {cont+=2;dibuja (a-2);}

}


Ahora en serio, envidio tus conocimientos en C++, yo me manejo mejor en C - y estoy empezando- y apenas en C++. Tu código demuestra un conocimiento y manejo de librerias, comandos y punteros que ya quisiera yo para mí.
...... Pero no me negaras que mi código es más "humano".
:silbar: :silbar: :silbar:
#1207
Cita de: BatchianoISpyxolo en 26 Octubre 2012, 15:45 PM
Opino lo mismo que tú :P
PD: ya modifiqué el código para que sea exactamente la figura que se pide.
Corrige algo porque sólo me sale " 1 ". No veo la sentencia - scanf- que permita entrar el tamaño de la figura. Supongo que estoy torpe, pero no me "cuadra" el código sin un scanf o un tamaño predeterminado. Perdona las observaciones. ¿O lo entras por el terminal?. Sí, eso es de ahí la conversión atoi. OK. Aclarado. Basta cambiar
Código (cpp) [Seleccionar]
figura(atoi(argv[1]));
por
       int num;
printf ("Entre un numero IMPAR:");
scanf ("%d",&num);
figura(num);

Pero no funciona correctamente ya que el 1 2 están desplazados una posición más a la derecha de lo que deberían; lo mismo le pasa al último 1.Saludos!
#1208
Cita de: BatchianoISpyxolo en 26 Octubre 2012, 15:23 PM
...y si quieres generar la misma figura que la tuya solo le tienes que poner una condición para que genere correctamente las dos últimas filas.
Lo haría con el código de cypascal, pero el tuyo es demasiado "denso": realmente has sacado la artillería pesada: strcpy, strcat, malloc ....
Pero reconozco que lo has "bordado", me parece increible.
#1209
Programación C/C++ / Re: Variable i variable aux
26 Octubre 2012, 15:17 PM
Cita de: Ander123 en 26 Octubre 2012, 15:04 PM
Pero no lo deberia incrementar en 3 porque hay 3 i++ , por lo tanto deberia quedar
aux =2,i=2
aux=2, i=3
o esos i++ no incrementan?
bueno dejemoalo, eate programa aun es demasiado dificil.
CitarAl primer " i "sólo le afecta el incremento de la condición, de ahí que valga aux=1, los siguientes ya pasan por los tres incrementos de ahí que aux pase a valer 4 ,7 ,10 ,13 ,...
#1210
Programación C/C++ / Re: Variable i variable aux
26 Octubre 2012, 13:59 PM
Cita de: Ander123 en 26 Octubre 2012, 12:54 PM
pero no entiendo bien como funciona
CitarTe dejo esté rollo que es la descripción del proceso:

si entras la cadena asdf :

for_1: i empieza en cero y la condición frase[++i]
lo incrementa, por lo que pasa q valer 1=aux
for_2: aux=1 e i desde cero a uno
     1 0....1 1

for_1: i que valía 1 se incrementa en la condición
del for_2, la condición de frase[++i] y en el
propio for_1 con lo que toma el valor 4=aux
for_2:aux= 4 e i desde cero a 4:
    4 0 ...41....4 2...4 3...4 4

for_1: i que valía 4 se incrementa en la condición
del for_2, la condición de frase[++i] y en el
propio for_1 con lo que toma el valor 7=aux
for_2:aux= 7 e i desde cero a 7:
7 0..7 1...........7 7

for_1: i que valía 7 se incrementa en la condición
del for_2, la condición de frase[++i] y en el
propio for_1 con lo que toma el valor 10=aux
for_2:aux= 10 e i desde cero a 10:
10 0..10 1..10 2.........10 10

Y como la cadena era "asdf" produce sólo
cuatro ciclos:aux=1,4,7,10
Si entras una cadena más larga habrán más ciclos,
por ejemplo el siguiente sería:

for_1 : i que valía 10 se incrementa en la condición
del for_2, la condición de frase[++i] y en el
propio for_1 con lo que toma el valor 13=aux
for_2:aux= 13 e i desde cero a 13:
13 0..13 1..13 2........13 13