|
71
|
Programación / Programación C/C++ / Re: Función en recursividad
|
en: 8 Abril 2014, 22:42 pm
|
Gracias por la ayuda "NikNitro!", te lo agradezco! El código lo llevo así: #include <stdio.h> #include <stdlib.h> #define FALSE 0 #define TRUE 1 int numLlamadas = 0; //CAMBIADO /* Declaracion de las funciones */ unsigned int f2x3 (int); /* Menu principal */ int main(void){ unsigned int n; // Variable "n" donde se guarda el numero y que utilizará la funcion printf("Escribe un numero: "); scanf("%d", &n ); // guardamos el numero introducido printf("\nTotal de llamadas: %d \n", numLlamadas ); // Mostramos el total de llamadas de la funcion //CAMBIADO return 0; } // Fin main /* Funcion */ unsigned int f2x3 (int n) { int i = 0; //El siguiente número que usaremos //CAMBIADO printf("%i ", n ); // Listamos los numeros que va llamando la funcion if (n == 1) return 1; // Primer caso, si el valor es igual a 1 entonces retornará 1 else { //CAMBIADO (n % 2 == 0) && (n % 3 == 0) i=n+5; // Caso II //CAMBIADO (n % 2 == 0) && (n % 3 != 0) i=n/2; // Caso III //CAMBIADO (n % 2 != 0) && (n % 3 == 0) i=n+2; // Caso IV //CAMBIADO (n % 2 != 0) && (n % 3 != 0) i=n-1; // Caso V //CAMBIADO } //CAMBIADO numLlamadas++; //CAMBIADO return f2x3(i); //CAMBIADO } // Fin de la funcion
El error que me da es el siguiente: In function `f2x3': syntax error before "i"
|
|
|
72
|
Programación / Programación C/C++ / Re: Función en recursividad
|
en: 7 Abril 2014, 23:08 pm
|
Me esta dando un error y llevo un rato intentando ver que es y no lo encuentro. En esta parte: if (n == 1) return 1; // Primer caso, si el valor es igual a 1 entonces retornará 1 else { //CAMBIADO (n % 2 == 0) && (n % 3 == 0) i=n+5; // Caso II //CAMBIADO (n % 2 == 0) && (n % 3 != 0) i=n/2; // Caso III //CAMBIADO (n % 2 != 0) && (n % 3 == 0) i=n+2; // Caso IV //CAMBIADO (n % 2 != 0) && (n % 3 != 0) i=n-1; // Caso V //CAMBIADO } //CAMBIADO numLlamadas++; //CAMBIADO
Error: syntax error before "i"
|
|
|
75
|
Programación / Programación C/C++ / Función en recursividad
|
en: 7 Abril 2014, 21:46 pm
|
Hola, a ver si me pueden corregir este programa en C jeje Programa que pedirá un número entero y hace una función int f2x3 con: 1) Si "n" es 1 escribirá "n" por pantalla y devolverá un 1. 2) Si "n" no es 1 y si es múltiplo de 2 y es múltiplo de 3 escribirá "n" por pantalla y llamará a f2x3 con el valor n+5. 3) Si "n" no es 1 y es múltiplo de 2 pero no es múltiplo de 3 escribirá "n" por pantalla y llamará a f2x3 con el valor n/2. 4) Si "n" no es 1 y es múltiplo de 3 pero no es múltiplo de 2 escribirá "n" por pantalla y llamará a f2x3 con el valor n+2. 5) Si "n" no es 1 y no es múltiplo de 2 ni múltiplo de 3 escribirá "n" por pantalla y llamará a f2x3 con el valor n-1. Ejemplo: Si introducimos un 18 Escribirá por pantalla: 18,23,22,11,10,5,4,2,1 Total: 9 llamadas #include <stdio.h> #include <stdlib.h> #define FALSE 0 #define TRUE 1 /* Declaracion de las funciones */ unsigned int f2x3 (int); /* Menu principal */ int main(void){ unsigned int n; // Variable "n" donde se guarda el numero y que utilizará la funcion printf("Escribe un numero: "); scanf("%d", &n ); // guardamos el numero introducido printf("\nTotal de llamadas: %d \n", f2x3 (n )); // Mostramos el total de llamadas de la funcion return 0; } // Fin main /* Funcion */ unsigned int f2x3 (int n) { printf("%i ", n ); // Listamos los numeros que va llamando la funcion if (n == 1) return 1; // Primer caso, si el valor es igual a 1 entonces retornará 1 if ((n != 1) && (n % 2 == 0) && (n % 3 == 0)) return f2x3(n+5); // Caso II if ((n != 1) && (n % 2 == 0) && (n % 3 != 0)) return f2x3(n/2); // Caso III if ((n != 1) && (n % 2 != 0) && (n % 3 == 0)) return f2x3(n+2); // Caso IV if ((n != 1) && (n % 2 != 0) && (n % 3 != 0)) return f2x3(n-1); // Caso V } // Fin de la funcion
Gracias y un saludo
|
|
|
76
|
Programación / Programación C/C++ / Enunciado ejercicio en C (no entiendo lo que me piden)
|
en: 27 Marzo 2014, 18:58 pm
|
Hola compañeros, tengo un ejercicio en C que no se muy bien lo que me pide. Os dejo el enunciado para ver si alguien es tan amable de decirme que es lo que pide Hacer un programa en lenguaje C que pedirá un número entero positivo "n". Hacer una función: int funcioRe (int n) - Si n es 1 escribirá "n" por pantalla y devolverá un 1.
En caso contrario: - Si "n" es par, entonces escribirá "n" por pantalla y llamará a funcioRe () con
el valor n / 2, (hay que pensar lo que retornara en este caso) - Si es impar entonces escribirá "n" por pantalla y llamará a funcioRe () con el
valor 3n +1 (hay que pensar lo que retornara en este caso) El problema consiste en saber el número de llamadas que se hacen hasta obtener el valor 1. Ejemplo: si introducimos: 22 El algoritmo escribirá: 22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1 Total: 16 llamadas Gracias!
|
|
|
79
|
Programación / Programación C/C++ / Listar secuencia de años hasta encontrar año con cifra repetida
|
en: 12 Marzo 2014, 23:07 pm
|
Buenas, Tengo un programa en C que me pide un año y luego me calcula cuantos años tienen que pasar hasta encontrar una cifra que sea repetida, es decir, año 2014 tiene 6 secuencias de años con cifras NO repetidas, ya que 2020 se repite una cifra (el 2). He logrado que me diga que faltan 6 secuencias, pero ahora me gustaría que me las listará, ejemplo: - 2014 - 2015 - 2016 - 2017 - 2018 - 2019 ¿Se podría hacer? Mi código actual: #include <stdio.h> #include <string.h> #include <time.h> #define FALSE 0 #define TRUE 1 /******* Declaracion de funcions ******/ int obtenerAnio(); int tipoAnio(int año); int calcularSec (int año); /******* Variables globales ******/ int obtenerAnioOK=FALSE; // Para NO acceder a la opción 3 antes int tipoAnioOK=FALSE; // Para NO acceder a la opción 3 antes /* MENU PRINCIPAL */ int main(void){ int opcion=0; int año; // Variable año utilizada en las funciones do{ printf("\n3.- Calcular secuencia"); printf("\nIntroduce una opcion: "); switch (opcion) { case 1: obtenerAnioOK=FALSE; // Hacer antes la opción 1 antes que la 3 tipoAnioOK=FALSE; // Hacer antes la opción 2 antes que la 3 año = obtenerAnio(); // Guardaremos en "any" lo que guarde la función obtenirAny break; case 2: if (!tipoAnio (año )) printf("\nEl año %i no tiene ninguna cifra repetida\n", año ); // Mientras tipusAny no sea igual a "anyo" else printf("\nEl año %i tiene cifras repetidas", año ); break; case 3: if ((obtenerAnioOK)&&(tipoAnioOK)){ // Después de hacerse la opción 1 y 2 TRUE printf("\nHay %i secuencias de año con cifras no repetidas.", calcularSec (año )); } // Fin if else ("\nDe momento no se ha introducido el año o el tipo de anyo\n"); break; case 0: break; default: printf("ERROR, opcion incorrecta!\n"); break; } // Fin switch }while (opcion != 0); return 0; } // Fin main /************* OBTENER año ***********/ int obtenerAnio(){ int año; // Variable "año" para guardar la fecha introducida do{ printf("\tINTRODUCE EL año\n"); printf("\nIntroduce un numero de cuatro digitos entre 1000 y 9999: "); scanf("%i", &año ); // Guardar }while ((año<1000)||(año>9999)); // Hacer mientras anyo sea + pequeño de 1000 y + grande de 9999 obtenerAnioOK=TRUE; // FLAG TRUE return año; } // Fin /*** TIPO año ***/ int tipoAnio(int año){ int cifras[10] = {0,0,0,0,0,0,0,0,0,0}; // Todas las cifras valen 0 por defecto int i=0, x=0, cont=0; while (año > 0) { x = año % 10; // Se queda con la resta, la cifra a tratar año = año / 10; // Quita el ultimo digito a la cifra cifras[x] = 1; // Asigna 1 a la posició de la cifra tratada } // Fin while for (i=0; i<10; i++) cont = cont + cifras[i]; tipoAnioOK=TRUE; // FLAG TRUE if (cont == 4) return 0; // No hay ninguna cifra repetida else return 1; // Alguna cifra esta repetida } // Fin /*** CALCULAR SECUENCIA ***/ int calcularSec (int año){ int cont=0; while (!tipoAnio(año++)) cont++; // Mientras tipusAnio pasando any+1, hasta que la función retorne 0, contador ++ // Osea, retornara el número de veces que se ha ejecutado la función tipuusAny hasta dar 0 pasando una variable +1 todo el rato return cont; } // Fin
Gracias
|
|
|
80
|
Informática / Hardware / Algunas teclas de mi portátil Acer no funcionan
|
en: 26 Enero 2014, 14:07 pm
|
Buenas,
Tengo un portátil Acer (Aspire 5633WLMi) del año 2007.
Este portátil me venía con Windows Vista, y hace tiempo le puse el Windows 7 y desde que lo formatee no me funcionan algunas teclas que vienen en teclado como son las de subir volumen, bajarlo, reproducir, stop, abrir navegador etc.
Hoy instalé Winwdows 8 y probé estas teclas y tampoco me iban en este Sistema Operativo. ¿Cual puede ser el problema? Rotas no creo que estén ¿no?
Recuerdo una vez que en un Live-CD de ubuntu funcionaban.
Gracias
|
|
|
|
|
|
|