|
Mostrar Temas
|
Páginas: [1]
|
1
|
Programación / Programación C/C++ / [c]Duda con return en funcion
|
en: 8 Abril 2014, 00:28 am
|
Hola a todos de nuevo aqui sigo liado estudiando y haciendo un programa que calcule los numeros primos me ha surgido una duda, os la explico a continuacion El programa lo escribi asi y me daba un resultado erroneo /*Programa del libro, tema 5 * ejercicio 5.27, pagina 170 * programa que busque los numeros primos*/ #include <stdio.h> int primo(int x); //prototipo de la funcion primo int main() { int x; for(x = 1; x <= 100; x++){ } //fin de for return 0; } //fin de main /*funcion primo*/ int primo(int x){ int y; int contador = 0; for (y = 1; y <= x; y++){ if (x % y == 0){ contador++ ; } //fin de if } //fin de for if (contador == 2){ return x; } } //fin de la funcion primo
entonces me puse a trastear posibles soluciones y lo modifique de tal manera y ya funciona perfecto, o eso creo /*Programa del libro, tema 5 * ejercicio 5.27, pagina 170 * programa que busque los numeros primos*/ #include <stdio.h> void primo(int x); //prototipo de la funcion primo int main() { int x; for(x = 1; x <= 100; x++){ primo(x); } //fin de for return 0; } //fin de main /*funcion primo*/ void primo(int x){ int y; int contador = 0; for (y = 1; y <= x; y++){ if (x % y == 0){ contador++ ; } //fin de if } //fin de for if (contador == 2){ } } //fin de la funcion primo
y me da la duda de porque de la primera forma no funciona si yo pensaba que seria lo mismo , haber si alguien me lo explica Un saludo
|
|
|
2
|
Programación / Programación C/C++ / [c] Problema numeros aleatorios mayores de 1000
|
en: 6 Abril 2014, 12:12 pm
|
Hola a todos de nuevo, os vengo con otro problemilla en mis estudios El caso es que estoy haciendo este ejercicio Y he hecho tal como he creido que iria bien, me funcionan todos los resultados, excepto el rango de 1000 <= n <= 1112 y no se porque pasa eso, supongo que será alguna "trampa" del lenguaje, porque he observado que falla en cuando el rango llega a 1000, antes va perfecto asta con los negativos. Os pego el codigo /*Programa del libro, Tema 5 * ejercicio 5.13, pagina 170 * problema funcion de numeros aleatorios*/ #include <stdio.h> #include <stdlib.h> #include <time.h> int aleatorio(int x, int y); int main() { int x, y; printf("Introduce dos numeros para hacer un rango (1 15 p.ej.): "); printf("%d <= %d <= %d\n", x , aleatorio (x , y ), y ); return 0; } int aleatorio(int x, int y){ int z; return z; }
Y unas capturas de que funcionar funciona, excepto con el rango que pasa de 1000. Pues eso, que si alguien me da norte por donde esta el problema, se lo agradezco mucho Un saludo
|
|
|
3
|
Programación / Programación C/C++ / [C] Rombo con asteriscos
|
en: 1 Marzo 2014, 20:14 pm
|
Buenas de nuevo, aqui os vengo otra vez con una duda, Esta vez he solucionado el problema que tengo pero de una manera poco ortodoxa ya que la segunda parte del problema la he ido rellenando por prueba y error. Asi que no me quedo conforme con ello y os pido ayuda haber que es lo que se me escapa. El problema es facil, imprimir un rombo tal como este * *** ***** ******* ********* ******* ***** *** *
Aqui sale torcido, pero ya os haceis una idea xD. Aqui el codigo que tengo, que funcionar funciona #include <stdio.h> int main() { int a, n, n1; int contador = 1; for (a = 5; a >= 1; a--){ for (n = 0; n <= a; n++){ } for (n1 = 1; n1 <= contador; n1++){ } printf("\n"); /*Triangulo superior*/ contador += 2; /*Asta aqui dominado mas o menos :) */ } for (a = 4; a >= 1; a--){ /*De aqui en adelante a sido una loteria :( */ for (n = 6; n >= a; n--){ /*Triangulo inferior*/ } for (n1 = 2; n1 <= contador-3; n1 ++){ } contador -= 2; } return 0; }
Pero como os digo he tenido que ir rellenando esta linea for (n1 = 2; n1 <= contador-3; n1 ++){
y esta otra contador -= 2;
haciendo prueba y error asta ajustarlo, un metodo un poco guarro creo, ya que realmente no lo he dominado. Bueno, pues eso, si alguien me orienta en donde pierdo el control, se lo agradeceria. Un saludo
|
|
|
4
|
Programación / Programación C/C++ / [C] Problema con ejercicio
|
en: 24 Febrero 2014, 16:38 pm
|
Hola de nuevo Sigo estudiando c en mis ratos libres y ya voy avanzando, pero estoy teniendo problemas con un ejercicio de los primeros que estoy haciendo con switch, no termino de ver que hago mal ( que seran muchas cosas ) El ejercicio es este: Y lo que tengo hecho luego de mil pruebas es esto otro: /*Programa del libro, Tema 4 * ejercicio 4.19, pagina 123 * Programa de calculos de ventas usando switch*/ #include <stdio.h> int main() { float a = 2.98; float b = 4.50; float c = 9.98; float d = 4.49; float e = 6.87; int n; int x = 0; float total; float a1,b1,c1,d1,e1; float a2,b2,c2,d2,e2; do{ printf("Ingrese el codigo de producto (-1 para salir): "); printf("Ingrese las unidades vendidas: "); while (x != -1){ switch (x){ case '1': a1 = a*n; a2 += a1; printf("Llega asta aki almenos"); /*chekeo*/ break; case '2': b1 = b*n; b2 += b1; break; case '3': c1 = c*n; c2 += c1; break; case '4': d1 = d*n; d2 += d1; break; case '5': e1 = e*n; e2 += e1; break; case '\n': case '\t': case ' ': break; default: printf("Introdujo un codigo erroneo\n"); break; } /*fin de switch*/ } /*fin while interno*/ } /*fin de do*/ while (x != -1); /*condicion de do*/ total = a2+b2+c2+d2+e2; printf("El total vendido es %f \n", total ); return 0; }
Cuando lo ejecuto, hace un ciclo infinito en printf("Itrodujo un codigo erroneo"), tal como este Como si el valor de x no coincidiera con ningun case. La verdad que ya estoy hecho un lio Gracias por adelantado
|
|
|
5
|
Programación / Programación C/C++ / Imprimir un patron de asteriscos
|
en: 2 Febrero 2014, 17:19 pm
|
Hola, buenas a todos de nuevo Estoy atascado en un ejercicio del libro que estoy estudiando y algo se me tiene que escapar porque ya probé mil cosas y no doy con la tecla, os ongo el enunciado. Esto es lo que tengo hecho, y no le veo el fallo de porque solo me saca una vez cada linea #include <stdio.h> int main() { int fila1 = 1; int fila2 = 1; int contador = 1; while (contador <= 8){ if (contador/2 != 0){ while (fila1 <= 8){ fila1 ++; } contador ++; } if (contador/2 == 0){ while (fila2 <= 8){ fila2 ++; } contador ++; } } return 0; }
Y esto es lo que me tira este codigo Pues eso, si podeis orientarme haber donde fallo, porque no lo veo Un saludo
|
|
|
6
|
Programación / Programación C/C++ / C: Encontrar los 2 numeros mayores
|
en: 18 Enero 2014, 10:38 am
|
Buenas a todos, os prometi que volveria y aqui vuelvo con otro problemilla, os cuento. Aclaro antes que nada que estoy siguiendo el libro de deitel y solo he estudiado if, else, while. Asi que no os salgais de ahí que ya para mi es mandarin xD Me he atrancado en el problema que me pide ingresar unos numeros y que te imprima los dos mayores, que me diga el valor mas alto lo hago bien, pero no soy capaz de sacar el segundo mayor. Ya le he dado varias vueltas sin exito. Como siempre supongo que fallo en las mates y no en el lenguaje en si. Os pongo el que a mi parecer seria mas lógico que funcionara: /* Programa del libro Tema 3 * ejercicio 3.27 pagina 83 * Introduzca 10 valores y encuentre los dos mas altos*/ #include <stdio.h> int contador = 1; int numero; int mayor = 0; int segundo = 0; int main() { while (contador <=5){ printf("Introduzca un numero: "); contador += 1; if(numero > mayor){ /*si num es mayor que mayor*/ mayor = numero; /* asigna el valor a mayor*/ if (numero > segundo){ /*si numero es mayor que segundo*/ if (numero < mayor){ /*y mas pequeño que mayor*/ segundo = numero; /*asigna el valor a segundo*/ } } } printf("El numero mayor es %d y el segundo mayor %d\n", mayor , segundo ); return 0; }
Viendo que no funcionaba reduje la entrada a 5, asi pruebo mas rapido, que seguro alguien me dice que el enunciado pone introduce 10 xD. El segundo valor siempre me lo deja como 0, una muestra: edito: Le di a enviar en vez a previsualizar xD
|
|
|
7
|
Programación / Programación C/C++ / Separar numeros en digitos individuales
|
en: 5 Enero 2014, 00:42 am
|
Hola a todos Soy muy nuevo en esto de la programación, justo empece hace unos dias a aprender C y ya tengo mi primer problema asi que vengo a pedir consejo o alguna pista. El libro que estoy siguiendo es el de deitel, la 4ª edicion y me quede atascado en el siguiente problema Escriba un programa que introduzca un numero de cinco digitos, que separe el numero en sus digitos individuales y que despliegue los digitos separados entre si mediante 3 espacios cada uno. [Pista: Utilice combinaciones de la division entera y el operador modulo]Lo llevo todo bastante bien por el momento, pero no se me ocurre el como puedo hacer para separar los digitos, supongo que mas que un problema con el lenguaje es de planteamiento, pero bueno. Por ahora el libro solo a tocado printf, scanf e if Decir tambien que apenas tengo estudios y los que tengo son de la edad del bronce xD asi que no seais muy malos conmigo Un saludo
|
|
|
8
|
Programación / Programación C/C++ / duda al comprar libro C
|
en: 23 Diciembre 2013, 21:25 pm
|
Hola a todos Me he decidido a estudiar C y estoy buscando un libro para ello. Muchos comentarios de los que he leido sobre libros de programación en C ponen bastante bien el libro de deitel & deitel y quisiera saber cual me recomendais ya que esta el de Programar en C / C++ 2ª edicion y el de Programar en C / C++ y java cuarta edicion mas o menos al mismo precio. No se las mejoras que pueda tener la cuarta edicion respecto a la segunda, si este ultimo estará anticuado ( es del 1998) o si el 4ª edicion será asi como mas por encima por eso de agregar java en el mismo numero de paginas, en fin que estoy hecho un lio. Si veis mejor otro libro, me lo comentais también, estoy abierto a todo, pero a ser posible en español ya que el ingles aun no lo piloto como debiera. Un saludo y felices fiestas a todos
|
|
|
|
|
|
|