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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con funcion, Metodo de seleccion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con funcion, Metodo de seleccion  (Leído 4,011 veces)
krowa

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Problema con funcion, Metodo de seleccion
« en: 23 Octubre 2011, 05:21 am »

Hola me presento en esta comunidad, estoy estudiando c++en mis ratos libres, cuando tengo tiempo, ya que soy estudiante (16 años.) y no me da mucho el tiempo.
Bueno esto no viene al caso :P,  
Estoy haciendo un programa el cual vos le ingresas la cantidad de posiciones que queres que contenga el vector e ingresas los elementos de cada posicion.
El programa lo que hace es ordenarlos por el metodo de seleccion usando una funcion.
Ya tengo claro el metodo de la burbuja, ( ya lo hice).
Y ahora estoy viendo el metodo de seleccion, se como es, pero quiero realizarlo creando una funcion que seleccione el menor numero del vector y retorne la posicion de ese vector en el cual se encuentra el menor numero.
(Recordemos que estoy en el metodo de seleccion)
Para luego ordenarlo, el problema es que NO funciona, a lo ultimo me muestra el vector, pero cualquier cosa me tira.

ACA EL CODIGO :


#include<iostream>
using namespace std;
int Menor(int v[], int nv,int i){
    int r=0;
                               for(;i<nv;i++){
                                       if(v<v[i+1])r=i;
                                       }
                                       return r;
                                       }
int main()
{
    //CARGA DEL VECTOR ---------------------------------------------------------
    int nv;
    cout<<"Introzuca la cantidad de elementos que desea que tenga el vector: ";
    cin>>nv;
    cout<<endl;
    int v[nv];
    v[nv+1]=0;
    for(int i=0;i!=nv;i++){
                          cout<<"Introduzca valor para la posicion Numero "<<i<<": ";
                          cin>>v;
                          cout<<endl;
                          }
    //FIN DE CARGA DEL VECTOR --------------------------------------------------
    //PROCESO DE ORDENAMIENTO CON LLAMADA A FUNCION MENOR--------------------------------------------------
    int temp,caca;
    for(int i=0;i!=nv;i++){
                           caca=Menor(v,nv,i);
                           temp=v;
                           v=v[caca];
                           v[caca]=temp;
                           }
    //FIN PROCESO DE ORDENAMIENTO -----------------------------------------------
    cout<<"Su vector ordenado: ";
    for(int i=1;i!=nv;i++){
                          cout<<v<<",";
                          }
    system("pause");
}

---

Se que estoy haciendo algo recontra mal, pero no encuentro el error, si me pueden ayudar gracias!


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Problema con funcion, Metodo de seleccion
« Respuesta #1 en: 23 Octubre 2011, 06:40 am »

Ese programa tiene demasiados errores, si no tienes un libro de calidad revisa los temas fijos de este foro. También puedes utilizar el motor de búsqueda.

En C++ el numero de elementos de un array lo debes indicar mediante una constante, no puedes utilizar una variable:
Código
  1. int v[nv];

Y aun cuando fuera valido los indices del array van desde 0 hasta nv-1, esto no es un indice valido:
Código
  1. v[nv+1]=0;
Y tampoco tiene caso ya que la siguiente operación es pedir todos los números.

En el primer bucle de la función principal utilizas el nombre del array "v" cuando deberías utilizar "v[ i ]".

En el siguiente bucle tratas de obtener los "nv" números menores cuando solo debes procesar "nv-1" números. Tanto en ese bucle como en el siguiente utilizas "v" cuando debería ser "v[ i ]".

La función que encuentra el valor menor se debe implementar con solo dos parámetros: la dirección base y el numero de elementos. Por ejemplo:
Código
  1. int fn_menor(int *elem, int num_elem)
  2. {
  3. int rv;
  4.  
  5. rv = elem[0];
  6. for (int i = 1; i != num_elem; ++i)
  7. if (rv > elem[ i ])
  8. rv = elem[ i ];
  9.  
  10. return rv;
  11. }

En buen plan: seria mejor que reescribieras desde cero el programa.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
krowa

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problema con funcion, Metodo de seleccion
« Respuesta #2 en: 24 Octubre 2011, 18:57 pm »

Gracias por tu ayuda lo pude hacer :D
Citar
En C++ el numero de elementos de un array lo debes indicar mediante una constante, no puedes utilizar una variable:
Código
  1. int v[nv];
--
Tengo 1 pregunta :D

Puedo declararlo asi?:
Código
  1. int N[];
  o..
Código
  1. int N[]= ;
porque?.
--

Citar
En buen plan: seria mejor que reescribieras desde cero el programa.

Un saludo
Excelente, asi lo hice y aca pongo el codigo, anduvo de 10, si llega a tener algun error o algo que "hice" que no deberia haber hecho podrias corregirlo?,
Gracias de nuevo!

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int mostrar(int N[]){    for(int i=0;i!=5;i++){
  5.                   cout<<N[i]<<" ";
  6.                   }
  7.              }
  8.  
  9. int cargar(int N[]){
  10.         for(int i=0;i<5;i++){
  11.                 cout<<"Introduzca valor para el elemento n"<<i+1<<": ";
  12.                 cin>>N[i];
  13.                 }
  14.         }
  15. int pos_men(int V[],int z){
  16.    int men=0,rat=z;
  17.    men=V[z];
  18.    for(int i=(z+1);i<5;i++){
  19.            if(V[i]<V[rat]){
  20.                         rat=i;
  21.                         }
  22.                           }
  23.    return rat;
  24. }
  25.  
  26. int main(){
  27.    int N[5],temp=0,g=0;
  28.    cargar(N);
  29.    cout<<"El vector desordenado: ";
  30.    mostrar(N);
  31.    for(int i=0;i<5;i++){
  32.            temp=pos_men(N,i);
  33.            g=N[i];
  34.            N[i]=N[temp];
  35.            N[temp]=g;
  36.            }
  37.            cout<<endl<<endl;
  38. cout<<"El vector ordenado: ";
  39. mostrar(N);
  40. system("pause");
  41. }
  42.  
En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Problema con funcion, Metodo de seleccion
« Respuesta #3 en: 24 Octubre 2011, 19:02 pm »

Declararlo asin "int N[]" es quivalente a "int *N" por lo que si puedes,inicializa el puntero con NULL :)
En línea

krowa

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problema con funcion, Metodo de seleccion
« Respuesta #4 en: 24 Octubre 2011, 19:05 pm »

Declararlo asin "int N[]" es quivalente a "int *N" por lo que si puedes,inicializa el puntero con NULL :)
Pero si lo delcaro asi queda como un vector? o como una variable?
Osea como "N
  • .." o como "N"?
Gracias por responder :D
En línea

krowa

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problema con funcion, Metodo de seleccion
« Respuesta #5 en: 24 Octubre 2011, 19:06 pm »

Pero si lo delcaro asi queda como un vector? o como una variable?
Osea como
Código
  1. N[x]
o como N?
Gracias por responder :D
En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Problema con funcion, Metodo de seleccion
« Respuesta #6 en: 24 Octubre 2011, 19:32 pm »

Queda como un puntero,no como un vector (array)
En línea

krowa

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: Problema con funcion, Metodo de seleccion
« Respuesta #7 en: 24 Octubre 2011, 19:54 pm »

Queda como un puntero,no como un vector (array)

Listo, Graciaas ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Metodo bisección para cualquier funcion dada
Programación C/C++
rob1104 5 13,193 Último mensaje 18 Febrero 2017, 05:33 am
por yorfrank
metodo de newton rapson para calcular las raices de una funcion con n grado
Programación C/C++
kiara_luna 1 18,949 Último mensaje 30 Septiembre 2011, 01:45 am
por kiara_luna
Problema Con Selección De Fila En Jtable Y Evento « 1 2 »
Java
ZedGe 12 14,929 Último mensaje 24 Noviembre 2011, 18:57 pm
por Leyer
Método seleccion en C++, error.
Programación C/C++
Abril7 3 1,737 Último mensaje 24 Abril 2017, 19:22 pm
por MAFUS
metodo y funcion
Programación General
Robocop8 4 3,156 Último mensaje 11 Noviembre 2017, 13:51 pm
por PalitroqueZ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines