Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: maxbox en 11 Julio 2018, 16:45 pm



Título: Errores de compilacion en C
Publicado por: maxbox en 11 Julio 2018, 16:45 pm
Buenas
necesito ayuda con un programa que estoy realizando, se que solo se ve como practica, pero quiero recalcar que soy un nuevo programador y no tengo la experiencia necesaria para realizar el programa tan lineal como la verdad yo quisiera. pero la verdad pido de su ayuda. abajo les dejare anexado el programa


coloco el programa en un compilador online y me resaltan los errores es lo ("<", ">" y "!") y no estoy seguro de por que.


/*2.- Una persona tiene una cuenta corriente en un Banco Nacional con un monto inicial de 520 Bolivares Fuertes.

La persona ingresa por teclado su clave de acceso compuesta de cuatro dígitos y luego una opción numérica para
realizar las siguientes operaciones:

1.- Consulta saldo.

2.- Retiro (El monto de retiro se ingresa por teclado).

3.- Deposito (El monto de deposito se ingresa por teclado).


Efectuar un algoritmo para:

a) Ingresar la clave de acceso y validar.

b) Ingresar la opción del usuario y realizar la transacción solicitada.
(Imprima saldo).

c) Validar todas las opciones e incluso cuando esta sea incorrecta.

*/



Código
  1. #include <stdio.h>
  2.  
  3. #include <conio.h>
  4.  
  5. #define fo_i 520
  6.  
  7. main(){
  8.  
  9. int clave, a, b, c, op, ci;
  10.  
  11.  
  12. printf("Bienvenido a el Banco Nacional de Venezuela"); //que no sirve para media *****
  13.  
  14. printf(" por favor intrdusca su clave"); //nose para que carajos la piden si no sirve el sistema
  15.  
  16. scanf("%d", &clave);
  17.  
  18. do {
  19. printf("introduzca la contraseña de 4 digitos");
  20.  
  21. scanf("%d", &clave);
  22.  
  23. if((clave =< 999) || (clave => 10000)){
  24.  
  25. printf("ha introducido una contraseña con una cantidad invalida de digitos");
  26.  
  27. }
  28.  
  29. }while(clave=<999 || clave =>10000);
  30.  
  31.  
  32. printf("1.-consulta de saldo");
  33.  
  34. printf("2.-retiro de fondos");
  35.  
  36. printf("3.-deposito de fondos");
  37.  
  38. printf("4.-¿desea salir del sistema?");
  39.  
  40. scanf("%d", &op);
  41.  
  42. if(!=4){
  43.  
  44.  
  45. do{
  46.  
  47. printf("introduzca los 2 ultimos digitos de su cedula para continuar:");
  48.  
  49. scanf("%d", &ci);
  50.  
  51. if(ci=<9 || ci=>100){
  52.  
  53. printf("ha introducido mas digitos de los solicitados");
  54.  
  55. switch(op){
  56.  
  57. case 1:
  58.  
  59. printf("el saldo en su cuenta es:%d", fo_i+=a);
  60.  
  61. printf("el saldo de su cuenta es:%d", fo_i-=b);
  62.  
  63. break;
  64.  
  65. case 2:
  66.  
  67. printf("introduzca el saldo a retirar de la cuenta");
  68.  
  69. scanf("%d", &a);
  70.  
  71. printf("su saldo es:%d", fo_i+=a);
  72.  
  73. break;
  74.  
  75. case 3:
  76.  
  77. printf("introduzca el saldo a depositar en la cuenta");
  78.  
  79. scanf("%d", &a);
  80.  
  81. printf("su saldo es:%d", fo_i-=a);
  82.  
  83. break;
  84.  
  85. }while(ci=<9 || ci=>100);
  86.  
  87. }
  88.  
  89. }
  90.  
  91. }
  92.  
  93.  

aquí dejo la lista de errores que me aparecen:

Código:
main.c:26:1: warning: return type defaults to 'int' [-Wimplicit-int]
main(){
^
main.c: In function 'main':
main.c:38:14: error: expected expression before '<' token
}while(clave=<999 || clave =>10000);
^
main.c:45:12: error: expected expression before '!=' token
if(!=4){
^
main.c:50:10: error: expected expression before '<' token
if(ci=<9 || ci=>100){
^
main.c:54:46: error: lvalue required as left operand of assignment
printf("el saldo en su cuenta es:%d", fo_i=+a);
^
main.c:55:46: error: lvalue required as left operand of assignment
printf("el saldo de su cuenta es:%d", fo_i=-b);
^
main.c:60:33: error: lvalue required as left operand of assignment
printf("su saldo es:%d", fo_i=+a);
^
main.c:65:33: error: lvalue required as left operand of assignment
printf("su saldo es:%d", fo_i=-a);
^
main.c:67:12: error: expected expression before '<' token
}while(ci=<9 || ci=>100);
^
main.c:70:1: error: expected 'while' before '}' token
}
^
main.c:70:1: error: expected declaration or statement at end of input
main.c:70:1: error: expected declaration or statement at end of input
main.c:31:4: warning: ignoring return value of 'scanf', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &clave);
^
main.c:34:4: warning: ignoring return value of 'scanf', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &clave);
^
main.c:44:4: warning: ignoring return value of 'scanf', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &op);
^


· Los códigos deben ir en etiquetas GeSHi
· Los titulos deben ser descriptivos al problema
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: Errores de compilacion en C
Publicado por: CalgaryCorpus en 11 Julio 2018, 17:32 pm
Los operadores para comparar son >= o <=
osea el < o el > van antes que el =

En tu codigo aparecen al reves osea escribiste => o =<


Título: Re: Errores de compilacion en C
Publicado por: engel lex en 11 Julio 2018, 17:35 pm
tienes montones de errores por descuidar detalles y no revisar 2 veces la info



primero que nada si todos los errores provienen de lo mismo

Citar
expected expression before '<' token

deberías preguntarte si el error está en la operación

esta es la primera
Código:
(clave =< 999) || (clave => 10000)


si revisamos los operadores
https://es.wikipedia.org/wiki/Anexo:Operadores_de_C_y_C%2B%2B (https://es.wikipedia.org/wiki/Anexo:Operadores_de_C_y_C%2B%2B)

vemos que son "<=" Y ">=" menor/mayor o igual que, no igual o menor/mayor que



Código:
main.c:45:12: error: expected expression before '!=' token
if(!=4){

esto no tiene sentido... diferente de 4, pero qué?



Código:
main.c:54:46: error: lvalue required as left operand of assignment
printf("el saldo en su cuenta es:%d", fo_i=+a);

y fo_i está definido como directiva del precompilador

Código:
#define fo_i 520

es decir, es una constante, no la puedes cambiar, los "lvalue" son cosas que acepten valores como las variables, por definición las constantes no...



Código:
main.c:70:1: error: expected 'while' before '}' token
}

la identación del codigo (los espacios a la izquierda) son vitales para su correcta lectura... el error se da porque estás cerrando donde no debes

este es tu sección despues de identar... mira el error

Código
  1. do {
  2.  printf("introduzca los 2 ultimos digitos de su cedula para continuar:");
  3.  scanf("%d", & ci);
  4.  
  5.  if (ci = < 9 || ci => 100) {
  6.    printf("ha introducido mas digitos de los solicitados");
  7.  
  8.    switch (op) {
  9.  
  10.    case 1:
  11.      printf("el saldo en su cuenta es:%d", fo_i += a);
  12.      printf("el saldo de su cuenta es:%d", fo_i -= b);
  13.      break;
  14.  
  15.    case 2:
  16.      printf("introduzca el saldo a retirar de la cuenta");
  17.      scanf("%d", & a);
  18.      printf("su saldo es:%d", fo_i += a);
  19.      break;
  20.  
  21.    case 3:
  22.      printf("introduzca el saldo a depositar en la cuenta");
  23.      scanf("%d", & a);
  24.      printf("su saldo es:%d", fo_i -= a);
  25.      break;
  26.  
  27.    }while (ci = < 9 || ci => 100);
  28.  
  29.  }
  30.  
  31. }



los warning
Código:
ignoring return value of 'scanf'

puedes ignorarlos simplemente se producen por cascada