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ú

Temas - dmacias

#1
Hola a todos de nuevo  ;D 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++){
        printf("%d\n", primo(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){
         printf("%d\n", x);
     }
     }  //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  :o , haber si alguien me lo explica

Un saludo  ;D
#2
Hola a todos de nuevo, os vengo con otro problemilla en mis estudios  :silbar:

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.): ");
     scanf("%d%d", &x, &y);
     
     printf("%d <= %d <= %d\n", x, aleatorio(x, y), y);
     
     return 0;
     
     }
     
int aleatorio(int x, int y){
     srand(time(NULL));
     int z;
     z = rand()%y + x;
     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  ;D

Un saludo
#3
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++){
printf(" ");
}
for (n1 = 1; n1 <= contador; n1++){
printf("*");
}
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*/
printf(" ");
}
for (n1 = 2; n1 <= contador-3; n1 ++){
printf("*");
}
printf("\n");
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 C/C++ / [C] Problema con ejercicio
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  ;D )
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): ");
scanf("%d", &x);
printf("Ingrese las unidades vendidas: ");
scanf("%d", &n);

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  :rolleyes:

Gracias por adelantado  ::)
#5
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){
printf("* ");
fila1 ++;
}
printf("\n");
contador ++;
}
if (contador/2 == 0){
printf(" ");
while (fila2 <= 8){
printf("* ");
fila2 ++;
}
printf("\n");
contador ++;
}
}
return 0;
}


Y esto es lo que me tira este codigo



Pues eso, si podeis orientarme haber donde fallo, porque no lo veo  :rolleyes:

Un saludo
#6
Buenas a todos, os prometi que volveria  :laugh: 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: ");
scanf("%d", &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
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  :P

Un saludo
#8
Programación C/C++ / duda al comprar libro C
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  ;D ;D