elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda: programa en lenguaje C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda: programa en lenguaje C  (Leído 2,939 veces)
Dayleap

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Ayuda: programa en lenguaje C
« en: 28 Abril 2016, 18:26 pm »

Hola buenas, os pido ayuda con este programa. Lo que quiero es ordenar unos caracteres de tal manera que primero se impriman '*' , luego '|' y final mente' _ '. Para eso tiene que  comparar un array predefinido con valor= 1234 , con otro que introducimos por teclado. Si estos dos son iguales el programa para de ejecutarse; sino sigue. Si el valor es correcto ha de escribir ****. Si un numero esta escrito en el array pero esta en una posicion incorrecta | y si no esta en el array una _. Por ejemplo : introducimos 1245 y nos devuelve **|_ , otro ejemplo; introducimos 3524 y devuelve *||_
 Muchas gracias!!Y tened paciencia por favor , soy nuevo en programacion.

ADEMAS si no fuera mucho pedir podriais decirme a que se debe este fallo en concreto:

si escribimos cualquier numero mayor de 4 lo da por bueno, cuando deberia de escribir una barra baja ya que en el array solo hay numeros  menores de 4.

Código
  1. #include<stdio.h>
  2. #include<time.h>
  3. #include<ctype.h>
  4. #include<math.h>
  5. #include<stdlib.h>
  6. #include<string.h>
  7.  
  8. int main (){
  9. char cad[5]="1234";
  10. char resp[5];
  11. char resul[5];
  12. char correc[5]="****";
  13. int asteriscos=0, barras=0, bajas=0, intentos=0, controlador=0,i,j,k,q;
  14.   do{
  15.  
  16.  
  17. intentos ++;
  18. printf("Escribe una cadena de 4 numeros + ENTER: ");
  19. scanf("%s", &resp);
  20. for(i=0;i>4;i++){
  21. if(resp[i]<'0'||resp[i]>'9'){
  22. printf("No pueden ser caracteres, tienen que ser numeros");}
  23. else continue;}
  24. if (strlen(resp)!=4 ){//si la cadena escrita es demasiado larga o corta
  25. printf("Error de longitud de cadena ");}
  26.  
  27.  
  28.  
  29.  
  30. for(i = 0; i < 4; i++){
  31. for(j = 0; j < 4; j++){
  32.  
  33.  
  34. if (i == j && cad[i]==resp[j]){
  35. asteriscos=asteriscos+1;j==4;}
  36.  
  37. if(i != j && cad[i]==resp[j]){
  38. barras=barras+1;j==4;}
  39.  
  40. else {
  41. bajas=bajas+1;j==4;
  42. }
  43. }
  44. }
  45.  
  46.  
  47.  
  48. for(q=0;q<asteriscos;q ++){
  49. resul[q]='*';}
  50. for(q=asteriscos; q<asteriscos+barras; q++){
  51. resul[q]='/';}
  52. for(q=asteriscos+barras; q<4; q++){
  53. resul[q]='_';}
  54. for(k = 0; k<4; k++){
  55. printf("%c", resul[k]);}
  56.  
  57. printf("\n");
  58.  
  59. if(strcmp(resul,cad)==0){
  60. intentos==100;}
  61. }while(intentos<100);return 0;}

MOD EDIT: Titulo y etiqueta GeSHi corregidos.


« Última modificación: 6 Mayo 2016, 12:29 pm por Dayleap » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda: programa en lenguaje C
« Respuesta #1 en: 28 Abril 2016, 21:36 pm »

Bueno, vamos con unos pocos fallos, los más fáciles:

Controla las asignaciones porqué lo que haces es mirar igualdad:
donde escribes j==4 e intentos==100
debe haber j=4 e intentos=100

Tienes un fallo en scanf: el nombre de un array ya es un puntero.
donde escribes scanf("%s", &resp)
debes haber scanf("%s", resp)

Para contar el número de asteriscos, barras verticales y barras bajas en cada iteración estos deben empezar a contar a partir de 0. Así después de do{ debe haber
asteriscos=0, barras=0, bajas=0;

Para el problema de lógica: sea cual sea lo que ha ocurrido acabas haciendo que j=4 y por tanto se detiene ese bucle y por tanto siempre comparas cad==resp[0]. Hay que reescribir eso totalmente.


En línea

Dayleap

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Ayuda: programa en lenguaje C
« Respuesta #2 en: 28 Abril 2016, 23:10 pm »

Gracias MAFUS intentare volver a escribirlo desde el principio a ver si corrigo el fallo  muchas gracias por contestar, publicare si soy capaz de corregir algo el codigo o no



Bueno, vamos con unos pocos fallos, los más fáciles:

Controla las asignaciones porqué lo que haces es mirar igualdad:
donde escribes j==4 e intentos==100
debe haber j=4 e intentos=100

Tienes un fallo en scanf: el nombre de un array ya es un puntero.
donde escribes scanf("%s", &resp)
debes haber scanf("%s", resp)

Para contar el número de asteriscos, barras verticales y barras bajas en cada iteración estos deben empezar a contar a partir de 0. Así después de do{ debe haber
asteriscos=0, barras=0, bajas=0;

Para el problema de lógica: sea cual sea lo que ha ocurrido acabas haciendo que j=4 y por tanto se detiene ese bucle y por tanto siempre comparas cad==resp[0]. Hay que reescribir eso totalmente.

Bueno, el fallo estaba en donde inicializaba las variables asteriscos, baras y bajas al cambiarlo y pornerlo dentro del do{}while ya funciona correctamente sacando una pequeña cosa que no se como hacer para que pare de ejecutarse el bucle ya que solo para cuando el numero de intentos es igual a 100


MOD EDIT: NO hacer doble post.
« Última modificación: 28 Abril 2016, 23:53 pm por MCKSys Argentina » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda: programa en lenguaje C
« Respuesta #3 en: 28 Abril 2016, 23:55 pm »

Mira si el número de asteriscos en 4. Si es así para el bucle. Puedes ponerlo en la condición del while: intentos<100 && asteriscos!=4
En línea

Dayleap

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: Ayuda: programa en lenguaje C
« Respuesta #4 en: 29 Abril 2016, 09:53 am »

Si , tambien funciona eso que dices. El tema es que tenia un controlador porque tenia que cumplir muchas mas condiciones al final entonces cree la variable tipo int controlador y cuando sea igual a 1 acaba el bucle
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda: programa en lenguaje c « 1 2 »
Programación C/C++
Dayleap 12 5,242 Último mensaje 22 Abril 2016, 00:04 am
por MAFUS
AYUDA! ---- Programa en lenguaje C en programa Dev-C ++ ---- AYUDA!
Programación C/C++
EduardoSaenz 4 3,856 Último mensaje 7 Mayo 2016, 23:38 pm
por MAFUS
Nesesito ayuda con un programa en lenguaje c++ (zinjai)
Programación C/C++
Vercetti979 2 1,888 Último mensaje 24 Julio 2016, 00:59 am
por Vercetti979
Ayuda por favor programa en lenguaje C
Programación C/C++
marting 0 1,086 Último mensaje 14 Octubre 2018, 22:41 pm
por marting
Ayuda con tarea de programa en lenguaje C
Programación C/C++
dominicanvictor 4 2,652 Último mensaje 9 Agosto 2019, 13:49 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines