|
Mostrar Temas
|
Páginas: 1 2 3 [4] 5 6 7 8 9
|
31
|
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!
|
|
|
32
|
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
|
|
|
33
|
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
|
|
|
34
|
Programación / Programación C/C++ / [help] Acertar un numero
|
en: 23 Enero 2014, 15:48 pm
|
Buenas, Tengo un problema en un juego de acertar un número, el usuario primero introduce un vector, luego tiene que acertar un numero del vector, cuando llegas a 3 intentos salta un mensaje diciendo que se te han acabado los intentos. El problema que tengo es que si acierto si me sale correcto pero hago más de 3 intentos incorrectos y no me sale el aviso. case 4: if (error != 3) { printf("\tJUEGO DE ACERTAR UN NUMERO"); printf("\n------------------------------\n"); printf("Escribe un numero: "); for (i=0; i<5; i++){ if (num == vector[i]) encontrado=1; } for (i=0; i<5; i++){ if (num != vector[i]) error=error+1; } if (encontrado == 1){ printf("ENHORABUENA! Has acertado un numero!"); }// fin if }//fin if else { printf("\nYa has hecho tres intentos"); } break;
A ver si me pueden echar un cable, gracias
|
|
|
35
|
Programación / Programación C/C++ / Reserva de asientos en un cine
|
en: 22 Enero 2014, 22:05 pm
|
Hola compañeros, Estoy haciendo un programa en C que me haga con una matriz los asientos de un cine, y me ha surgido un problema tonto. Cuando asigno un asiento reservado y muestro por pantalla me aparece así: Yo escogí reservar fila 3 y columa 3 y me reserva los anteriores, es decir, donde he marcado en rojo debería estar en "0". printf("\nEscribe la fila: "); printf("\nEscribe la columna: "); for (i=0; i<fila; i++) { for (j=0; j<columna; j++) {;} if (mat[i][j] != 1){ mat[i][j] = 1; } else printf("Asiento ocupado"); }
Gracias!
|
|
|
36
|
Programación / Programación C/C++ / Suma de matriz + matriz invertida
|
en: 16 Enero 2014, 14:17 pm
|
Hola, Estoy haciendo un programa que rellene una matriz y que luego la ponga invertida. Una vez hecho la invertida sumar la matriz con la matriz invertida pero en el resultado muestra esto: Aquí dejo el Código: #include <stdio.h> #include <stdlib.h> #define FILA 3 #define COLUM 3 int main(){ int i=0, j=0, num=0; int mat[FILA][COLUM]; int invert[FILA][COLUM]; int suma[FILA][COLUM]; // MATRIZ NORMAL for(i=0; i<FILA; i++){ for(j=0; j<COLUM; j++){ printf("Rellena la matriz %d %d: ",i ,j ); mat[i][j] = num; } } // HACER Y MOSTRAR INVERTIDA printf("\nMATRIZ INVERTIDA\n\n"); for(i=0; i<FILA; i++){ for(j=0; j<COLUM; j++){ invert[FILA][COLUM] = mat[FILA - i - 1][COLUM - j - 1]; printf("| %d |", invert [FILA ][COLUM ]); } } // HACER SUMA for(i=0; i<FILA; i++){ for(j=0; j<COLUM; j++){ suma[FILA][COLUM] = mat[FILA][COLUM] + invert[FILA][COLUM]; } } // MOSTRAR SUMA printf("\nSUMA DE LAS MATRICES\n\n"); for(i=0; i<FILA; i++){ for(j=0; j<COLUM; j++){ printf("| %d |",suma [FILA ][COLUM ]); } } return 0; }
Gracias!
|
|
|
37
|
Sistemas Operativos / Windows / Cuotas en un RAID con VirtualBox??
|
en: 27 Diciembre 2013, 13:02 pm
|
Buenas,
Tengo que hacer un RAID en VirtualBox definiendo cuotas de manera que los usuarios solo pueden guardar 50 MB y que antes de llenar esos 50 MB les aparezca un mensaje de aviso.
Es de un ejercicio que tengo que hacer, pero no tengo mucha idea de como hacerlo, creo que se hará con las directivas de auditoria.
¿Alguien me podría echar una mano?
|
|
|
38
|
Programación / Programación C/C++ / Decir si un vector es palindromo o no
|
en: 16 Diciembre 2013, 11:04 am
|
Hola de nuevo, De nuevo vengo a pedir ayuda, porque no consigo hacer que me diga si un vector es palindromo o no. Dejo el código entero para que vean que estoy haciendo, pero la parte incorrecta es el palindromo, siempre me dice "No es palindromo". Ejemplo: 5 6 6 5 -> Si es palindromo #include <stdio.h> #include <stdlib.h> #include <string.h> #include<conio.h> int main(){ int n, i, num; do{ printf("Grandaria del vector: "); }while(n<4 || n>20); //Entre 4 y 20 int vector[n]; for (i=0; i<n; i++){ do{ printf("Introduce un numero, vector %i: ", i +1); vector[i] = num; }while(num<0 || num>9); // Entre 0 y 9 } // Mostrar vector printf("____________________\n\n"); for (i=0; i<n; i++) // PALINDROMO int temp = vector[i]; int extraer = 0; int nuevonumero = 0; for(i = 0; temp > 0; i++){ extraer = temp%10; nuevonumero = (nuevonumero*10) + extraer; temp = temp/10; } if(temp == nuevonumero){ } else{ printf("\n\nNo es palindromo"); } return 0; }
Muchas gracias!
|
|
|
39
|
Programación / Programación C/C++ / Cómo extraer caracteres en C
|
en: 13 Diciembre 2013, 13:07 pm
|
Hola, Estoy haciendo un programa en C y una opción es extraer caracteres comenzando desde la izquierda y otra opción es extraer caracteres comenzando desde la derecha. He podido printar solo los caracteres que se han extraido pero no consigo printar el resultado de la cadena. EXTRAER DESDE LA IZQUIERDA printf("Cuantos caracteres quieres extraer? "); scanf("%d", &extraerIzq ); for (i=0; i<longitud && i<extraerIzq; i++){ printf("\nSe ha extraido: %c", cadena [i ]); }
EXTRAER DESDE LA DERECHAprintf("Cuantos caracteres quieres extraer? "); scanf("%d", &extraerDer ); extraerDer = longitud - (extraerDer > longitud?longitud:extraerDer); for (i = longitud - 1; i >= extraerDer; i--) printf("\nSe ha extraido: %c", cadena [i ]);
|
|
|
40
|
Programación / Programación C/C++ / [Help] Programa que calcula sueldos
|
en: 11 Diciembre 2013, 14:00 pm
|
Hola, Estoy haciendo un programa en C que al introducir unos sueldos me calcule el sueldo neto, pueda modificar el suelo y también poder subir el sueldo. Es un menú de 4 opciones, solamente me falla la opción 3 que es la de modificar el sueldo. ¿Podrían echarle un ojo y decirme en que fallo? Gracias #include <stdio.h> #include <stdlib.h> #include <time.h> int main () { float sueldo[10], sueldoNeto[10], segSoc, irpf, sueldoNuevo, porcent; int opcion=1; int i=0; bool lleno = false; while (opcion != 0){ printf("1.- Introducir sueldos\n"); printf("2.- Calcular sueldo neto\n"); printf("3.- Modificar sueldos\n"); printf("4.- Subir sueldos\n"); printf("\nEscoge una opcion: "); switch (opcion){ case 1: for (i=0; i<10; i++){ sueldo [i ] = (rand()%4999)+499; } // Mostrar Salario Bruto for (i=0; i<10; i++){ printf("%.2f euros\n", sueldo [i ]); } lleno = true; break; case 2: if (lleno) { for (i=0; i<10; i++){ segSoc = sueldo[i] * 0.06; if (sueldo[i] <= 700) irpf = sueldo[i] * 0.08; else if (sueldo[i] <= 1100) irpf = sueldo[i] * 0.11; else if (sueldo[i] <= 1500) irpf = sueldo[i] * 0.13; else if (sueldo[i] <= 2100) irpf = sueldo[i] * 0.17; else if (sueldo[i] <= 3000) irpf = sueldo[i] * 0.20; else irpf = sueldo[i] * 0.25; sueldoNeto[i] = sueldo[i] - segSoc - irpf; } // Visualizar Sueldo Neto for (i=0; i<10; i++){ printf("\nSueldo neto del empleado %i: %.2f euros\n",i +1, sueldoNeto [i ]); } } else printf("\nERROR! No se ha introducio ningun sueldo\n"); break; case 3: if (lleno) { do{ printf("A que empleado le quieres modificar el sueldo? "); }while((i<0) || (i>11)); do{ printf("Introduce un nuevo sueldo entre %.2f y 5000: ", sueldo [i ]); scanf("%.2f", &sueldoNuevo ); }while ((sueldoNuevo < sueldo[i]) || (sueldoNuevo > 5000)); printf("\nEl nuevo sueldo es %.2f: ",sueldoNuevo ); } else printf("\nERROR! No se ha introducio ningun sueldo\n"); break; case 4: if (lleno){ printf("Escribe el portencaje para subir los sueldos: "); for (i=0; i<10; i++){ sueldoNuevo = sueldo[i] + ((sueldo[i] * porcent) / 100); sueldo[i] = sueldoNuevo; } // Visualizar sueldos subidos for (i=0; i<10; i++){ printf("\nSe ha subido el sueldo a: %2.f", sueldo [i ]); } } else printf("\nERROR! No se ha introducio ningun sueldo\n"); break; case 0: printf("\nHas decidido salir, hasta luego!\n\n"); return 0; break; default: printf ("La opcion es incorrecta, Presiona ENTER"); } // Fin switch } // Fin While return 0; }
Gracias
|
|
|
|
|
|
|