Autor
|
Tema: modificar a la función c++ (Leído 2,091 veces)
|
indict
Desconectado
Mensajes: 78
|
El siguiente programa me muestra la posición que ocupa el primer valor del vector que es divisible por un entero dado, ¿qué debería modificar para que no me mostrara solamente la primera posición sino todas? #include<iostream> #include<vector> using namespace std;
bool divisor(vector<int>v,int m){ int i; bool encontrado=false; while(i<v.size() and not encontrado){ if(v[i]%m==0){encontrado=true;} else{i++;}} return i;} int main (){ int n,i=0,e,m; cout<<endl<<"Entre el divisor..."; cin>>m; cout << endl << "Entre el número de elementos del vector..."; cin >> n; vector<int> v(n); for(i=0;i<n;i++){ cout << "Entre el elemento " << i << " del vector..."; cin >> e; v[i] = e;} cout << endl; cout<<divisor(v,m)<<endl; cout<<endl; system("pause"); return 0;} ¡¡Gracias!!
|
|
|
En línea
|
|
|
|
JavierJV
Desconectado
Mensajes: 17
|
Lo que queres es que en ves de devolverte el primer numero que es divisible por m (variable), te devuelva todos los divisibles del arreglo?
en la función divisor() , modifica el while para que siga toda la longitud del arreglo, y no pare cuando encuentra el primero y los vas imprimiendo a medida que los encuentras.
|
|
|
En línea
|
|
|
|
flony
Desconectado
Mensajes: 584
|
en la parte while(i<v.size() and not encontrado) esta de mas and not encontrado propongo una idea alternativaen esto de programar siempre hay mas de una forma de encarar un problema...si te sirve para mi seria así...nunca entendí bien bool...prefiero un if y de while prefiero un for #include<iostream> #include<vector> using namespace std;
void divisor(vector<int>v,int m) { int i; for (int i = 0; i < v.size(); i++) { if (v[i]%m==0) { cout<<"el elemento divisibles es: "<<v[i]<<endl; } } } int main (){ int n,i=0,e,m; cout<<endl<<"Entre el divisor..."; cin>>m; cout << endl << "Entre el numero de elementos del vector..."; cin >> n; vector<int> v(n); for(i=0;i<n;i++){ cout << "Entre el elemento " << i+1 << " del vector..."; cin >> e; v[i] = e; } cout << endl; divisor(v,m); cout<<endl; system("pause"); return 0;}
|
|
« Última modificación: 24 Enero 2013, 15:29 pm por flony »
|
En línea
|
si un problema no tiene solucion entonces no es un problema...es algo inevitable
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
......................... ¿qué debería modificar para que no me mostrara solamente la primera posición sino todas?
Aunque no le guste el while a flony para no cambiarte mucho el código:#include<iostream> #include<vector> #include<cstdlib>/*<==HACE FALTA PARA SYSTEM ¡ ¡ ¡*/ using namespace std; bool divisor(vector<int>v,int m){ int i=0; bool encontrado=false; while(i<v.size() ){ if(v[i]%m==0) cout<<"el elemento divisibles es: v["<<i<<"]= "<<v[i]<<endl; i++; } } int main (){ int n,i=0,e,m; cout<<endl<<"Entre el divisor..."; cin>>m; cout << endl << "Entre el número de elementos del vector..."; cin >> n; vector<int> v(n); for(i=0;i<n;i++){ cout << "Entre el elemento " << i+1<< " del vector..."; cin >>v[i];/*<==que es eso de: cin >> e;y luego v[i] = e;*/ } cout << endl; cout<<divisor(v,m)<<endl; cout<<endl; system("pause"); return 0;}
Saluditos!.
|
|
|
En línea
|
|
|
|
indict
Desconectado
Mensajes: 78
|
¡¡muy buenas explicaciones!! muchas gracias por todas las respuestas y comentarios.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Función que retorna el valor de retorno de otra función
Programación C/C++
|
naderST
|
7
|
5,128
|
7 Diciembre 2011, 23:45 pm
por naderST
|
|
|
Evaluar Una Funcion dentro de otra funcion Python
Scripting
|
cristiantorres
|
1
|
10,729
|
14 Abril 2012, 06:20 am
por cristiantorres
|
|
|
Modificar Grub para modificar propiedades de otros distros
GNU/Linux
|
Puntoinfinito
|
7
|
6,063
|
2 Agosto 2012, 01:37 am
por dato000
|
|
|
Funcion de modificar archivos no funciona
Programación C/C++
|
lifegame
|
2
|
2,051
|
24 Mayo 2017, 15:30 pm
por lifegame
|
|
|
funcion de modificar
Programación C/C++
|
behindfa21
|
1
|
2,759
|
4 Mayo 2022, 19:37 pm
por K-YreX
|
|