|
1201
|
Programación / Programación C/C++ / Re: ejercicio en C
|
en: 29 Octubre 2012, 23:28 pm
|
muchas gracias!! ya he visto mis fallos que son bastantes, aun me queda por aprender, pero dicen que de los fallos se aprende Muy bien, eso es aptitud positiva. Saludos!.
|
|
|
1202
|
Programación / Programación C/C++ / Re: ejercicio en C
|
en: 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í:#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
|
Programación / Programación C/C++ / Re: Ayuda con un programa muy facil
|
en: 28 Octubre 2012, 20:25 pm
|
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:#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
|
Programación / Programación C/C++ / Re: Ayuda con ejercicio en C
|
en: 28 Octubre 2012, 17:21 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: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ú:#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 / Programación C/C++ / Re: RETOS C++
|
en: 28 Octubre 2012, 13:39 pm
|
En mi serie empieza desde 1:#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
|
Programación / Programación C/C++ / Re: Recursividad en C++, programas que no comprendo muy bien
|
en: 27 Octubre 2012, 00:31 am
|
Código modificado. PD: cuidado con recoger valores numéricos por teclado 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" REEDITO:Ya lo tengo con recursividad y sin la "artilleria pesada" #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".
|
|
|
1207
|
Programación / Programación C/C++ / Re: Recursividad en C++, programas que no comprendo muy bien
|
en: 26 Octubre 2012, 17:55 pm
|
Opino lo mismo que tú 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
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
|
Programación / Programación C/C++ / Re: Recursividad en C++, programas que no comprendo muy bien
|
en: 26 Octubre 2012, 15:39 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 / Programación C/C++ / Re: Variable i variable aux
|
en: 26 Octubre 2012, 15:17 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.
Al 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 / Programación C/C++ / Re: Variable i variable aux
|
en: 26 Octubre 2012, 13:59 pm
|
pero no entiendo bien como funciona Te 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
|
|
|
|
|
|
|