Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: joseh94 en 5 Noviembre 2014, 00:04 am



Título: Ayuda programa en C!
Publicado por: joseh94 en 5 Noviembre 2014, 00:04 am
Hola a todos!

Estoy haciendo ejercicios de la universidad sobre programacion en C, y tengo un ejercicio que me pide dado un vector (que yo voy introduciendo) dar la posición del número más cercano al primero, y he escrito el siguiente código:

Código:
#include <stdio.h>

main()
{
    int n,cont,h;
    float vector[80];
    printf("Cuantos numeros?: ");
    scanf("%d",&n);
    for(cont=0;cont<n;cont++)
    {
        printf("x= ");
        scanf("%f",&vector[cont]);
    }
    h=vector[1]-vector[0];
    for(cont=2;cont<n;cont++)
        if(abs(vector[cont]-vector[0])<h)
            h=cont;
    printf("La posicion del mas cercano es: %d\n",h);
    return 0;
}

Pero por ejemplo al introducir el vector [2,6,4,1,10], la salida es un 4, osea, me dice que el más cercano al 2 es el 10, y tendría que dar un 3, ¿alguien me puede ayudar?.

Gracias de antemano!!


Título: Re: Ayuda programa en C!
Publicado por: Flakito81 en 5 Noviembre 2014, 01:38 am
debe de ser cosa del cansancio pero no entiendo exactamente lo que tiene que hacer el programa.
¡podrias poner dos ejemplos?


Título: Re: Ayuda programa en C!
Publicado por: crack81 en 5 Noviembre 2014, 02:31 am
Buenas amigo aqui esta tu codigo lo reutilize del tuyo porque me dio flojerea tenias problemas con las llaves{}
sin mas aqui esta :

Código
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3.  
  4. main()
  5. {
  6.    int n,cont,h,pos=1;
  7.    float vector[80];
  8.    printf("Cuantos numeros?: ");
  9.    scanf("%d",&n);
  10.    for(cont=0;cont<n;cont++)
  11.    {
  12.        printf("x= ");
  13.        scanf("%f",&vector[cont]);
  14.    }
  15.    h=abs(vector[0]-vector[1]);
  16.    for(cont=2;cont<n;cont++){
  17.        if((abs(vector[cont]-vector[0]))<h){
  18.            h=abs(vector[0]-vector[cont]);
  19.            pos=cont;
  20.        }
  21.    }
  22.  
  23.    printf("La posicion del mas cercano es: %d\n",pos);
  24.    return 0;
  25. }
  26.  


Título: Re: Ayuda programa en C!
Publicado por: leosansan en 5 Noviembre 2014, 17:26 pm
Buenas amigo aqui esta tu codigo lo reutilize del tuyo porque me dio flojerea tenias problemas con las llaves{}
.....................................................

Falta el tipo "int" de la función main.  ;)

¿Y por qué no usar el mismo for de entrada de los datos para ir averiguando la posición? :

Código
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3.  
  4. int main ( ) {
  5.  int n , cont , pos = 1 ;
  6.  float vector [ 80 ] ;
  7.  printf ( "Cuantos numeros?: " ) , scanf ( "%d" , &n ) ;
  8.  for ( cont = 0 ; cont < n ; cont++ ) {
  9.    printf ( "x = " ) , scanf ( "%f" , &vector [ cont ] ) ;
  10.      if( cont > 1 && ( abs ( vector [ cont ] - vector [ 0 ] ) ) < abs ( vector [ pos ] - vector [ 0 ] ) )
  11.        pos = cont ;
  12.  }
  13.  printf( "\nLa posicion del mas cercano es: %d\n " , pos ) ;
  14.  return 0;
  15. }

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Ayuda programa en C!
Publicado por: eferion en 5 Noviembre 2014, 17:41 pm
leosansan, se te coló una coma entre el printf y el scanf.

Por un momento pensé que ibas a meter macros jejejeje


Título: Re: Ayuda programa en C!
Publicado por: leosansan en 5 Noviembre 2014, 18:58 pm
leosansan, se te coló una coma entre el printf y el scanf.

No se me coló, lo puse así para ahorrar una línea por cada pareja de printf y scanf .  :rolleyes:

Por un momento pensé que ibas a meter macros jejejeje

 ;-) Y dale, ¡Ouggg Gran Maestro!, estando tú presente ni me atrevo a esas cosas.  :)

Un fuerte abrazo amigo eferion.

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Ayuda programa en C!
Publicado por: eferion en 5 Noviembre 2014, 21:49 pm
No se me coló, lo puse así para ahorrar una línea por cada pareja de printf y scanf .  :rolleyes:

¿No debería ser un punto y coma en vez de solamente una coma? jejeje

;-) Y dale, ¡Ouggg Gran Maestro!, estando tú presente ni me atrevo a esas cosas.  :)

Gran maestro yo??? jajajaja, me halagas. Tampoco te creas que soy un gurú de las macros... de echo prefiero evitarlas salvo para cosas muy muy muy concretas. Yo personalmente pienso que las macros son uno de los cánceres de C++... la compilación de programas en C++ es lentísima en parte gracias a la existencia de las macros... no ofrecen ningún tipo de tipado... su código no se puede depurar...


Título: Re: Ayuda programa en C!
Publicado por: leosansan en 5 Noviembre 2014, 22:05 pm
¿No debería ser un punto y coma en vez de solamente una coma? jejeje

"Creo" que puedes separar instrucciones/funciones, como el scanf y el printf, por una coma sin necesidad de un punto y coma para cada uno de ellos. Vamos, como el declarar varias variables del tipo int, como ejemplo: int i , j , k ;

Gran maestro yo??? jajajaja, me halagas.

A cada uno lo que se merece y sí, es un halago a tus profundos conocimientos de C++...y C.

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)