Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Mozzard en 12 Noviembre 2018, 19:44 pm



Título: No encuentro el error ayuda! C
Publicado por: Mozzard en 12 Noviembre 2018, 19:44 pm
Se supone que al poner un numero entre  1 y 10 el programa devuelve:
1
2
3
4... hasta el numero que hayamos puesto
Pues funciona, pero si pongo un numero mas grande que 10 hace esto igual, cuando deberia de devolver numero incorrecto.
Código:
#include <stdlib.h>
#include <stdio.h>

int Maximo10(int n){
if(n>=1 and n<=10){
return n;
}else{
return 0;
}
}

int main(){
printf("Introduce un numero entrel 1 i el 10: ");
int longitud_array;
scanf("%i",&longitud_array);
int array[longitud_array],n=0;
if (Maximo10[longitud_array]==0){
printf("NUMERO INCORRECTO");
}else{
for(n;n<longitud_array;n++){
array[n] = {n+1};
printf("%i\n", array[n]);
}
}
}


Título: Re: No encuentro el error ayuda! C
Publicado por: CalgaryCorpus en 12 Noviembre 2018, 22:15 pm
Cuando llamas la funcion Maximo10 estas usando parentesis cuadrados, usa parentesis redondos.


Título: Re: No encuentro el error ayuda! C
Publicado por: MAFUS en 12 Noviembre 2018, 22:20 pm
Cambia


Código:
if(n>=1 and n<=10){
por
Código:
if(n>=1 && n<=10){



Código:
if (Maximo10[longitud_array]==0){
por
Código:
if (Maximo10(longitud_array)==0){



Código:
for(n; n<longitud_array; n++){
por
Código:
for(; n<longitud_array; n++){



Código:
array[n] = {n+1};
por
Código:
array[n] = n+1;

Supongo que ves el porqué de estos cambios, a parte de porque todos te los marca el compilador.


Título: Re: No encuentro el error ayuda! C
Publicado por: Mozzard en 14 Noviembre 2018, 17:58 pm
Hola, gracias por responder, el compilador que uso Dev c++ no me detectaba nada, cambiando los [] por {} ya me funciona gracias!


Título: Re: No encuentro el error ayuda! C
Publicado por: Beginner Web en 14 Noviembre 2018, 18:52 pm
Diablos señor Mozzard, debo decirle que tiene que ser un poco mas ordenado, esa funcion Maximo la usaria como tipo logica que me devolviera true si el numero ingresado es valido, le dejo un ejemplo
Código
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. bool Maximo10(int n)
  5. {
  6. return n>0 && n<=10;
  7. }
  8.  
  9. int main(){
  10.  
  11. int longitud_array;
  12. printf("Introduce un numero entrel 1 i el 10: ");
  13. scanf("%i",&longitud_array);
  14. int array[longitud_array], n=0;
  15. if (Maximo10(longitud_array)==false)
  16. printf("NUMERO INCORRECTO");
  17. else{
  18. for(n=0;n<longitud_array;n++){
  19. array[n] = {n+1};
  20. printf("%i\n", array[n]);
  21. }
  22. }
  23. }