Autor
|
Tema: Problema con funcion, Metodo de seleccion (Leído 4,509 veces)
|
krowa
Desconectado
Mensajes: 21
|
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 , 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
Mensajes: 1.639
|
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: int v[nv];
Y aun cuando fuera valido los indices del array van desde 0 hasta nv-1, esto no es un indice valido: 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: int fn_menor(int *elem, int num_elem) { int rv; rv = elem[0]; for (int i = 1; i != num_elem; ++i) if (rv > elem[ i ]) rv = elem[ i ]; return rv; }
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
Mensajes: 21
|
Gracias por tu ayuda lo pude hacer En C++ el numero de elementos de un array lo debes indicar mediante una constante, no puedes utilizar una variable: int v[nv];
-- Tengo 1 pregunta Puedo declararlo asi?: int N[];
o.. int N[]= ;
porque?. -- 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! #include <iostream> using namespace std; int mostrar(int N[]){ for(int i=0;i!=5;i++){ cout<<N[i]<<" "; } } int cargar(int N[]){ for(int i=0;i<5;i++){ cout<<"Introduzca valor para el elemento n"<<i+1<<": "; cin>>N[i]; } } int pos_men(int V[],int z){ int men=0,rat=z; men=V[z]; for(int i=(z+1);i<5;i++){ if(V[i]<V[rat]){ rat=i; } } return rat; } int main(){ int N[5],temp=0,g=0; cargar(N); cout<<"El vector desordenado: "; mostrar(N); for(int i=0;i<5;i++){ temp=pos_men(N,i); g=N[i]; N[i]=N[temp]; N[temp]=g; } cout<<endl<<endl; cout<<"El vector ordenado: "; mostrar(N); system("pause"); }
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Declararlo asin "int N[]" es quivalente a "int *N" por lo que si puedes,inicializa el puntero con NULL
|
|
|
En línea
|
|
|
|
krowa
Desconectado
Mensajes: 21
|
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 Gracias por responder
|
|
|
En línea
|
|
|
|
krowa
Desconectado
Mensajes: 21
|
Pero si lo delcaro asi queda como un vector? o como una variable? Osea como N[x]
o como N? Gracias por responder
|
|
|
En línea
|
|
|
|
Riki_89D
Desconectado
Mensajes: 851
BCN CITY
|
Queda como un puntero,no como un vector (array)
|
|
|
En línea
|
|
|
|
krowa
Desconectado
Mensajes: 21
|
Queda como un puntero,no como un vector (array)
Listo, Graciaas
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Metodo bisección para cualquier funcion dada
Programación C/C++
|
rob1104
|
5
|
13,522
|
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
|
19,213
|
30 Septiembre 2011, 01:45 am
por kiara_luna
|
|
|
Problema Con Selección De Fila En Jtable Y Evento
« 1 2 »
Java
|
ZedGe
|
12
|
15,394
|
24 Noviembre 2011, 18:57 pm
por Leyer
|
|
|
Método seleccion en C++, error.
Programación C/C++
|
Abril7
|
3
|
1,962
|
24 Abril 2017, 19:22 pm
por MAFUS
|
|
|
metodo y funcion
Programación General
|
Robocop8
|
4
|
3,411
|
11 Noviembre 2017, 13:51 pm
por PalitroqueZ
|
|