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)
| | |-+  modificar a la función c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: modificar a la función c++  (Leído 2,091 veces)
indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
modificar a la función c++
« en: 24 Enero 2013, 12:19 pm »

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?

Código:
#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 Desconectado

Mensajes: 17


Ver Perfil
Re: modificar a la función c++
« Respuesta #1 en: 24 Enero 2013, 13:17 pm »

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 Desconectado

Mensajes: 584



Ver Perfil
Re: modificar a la función c++
« Respuesta #2 en: 24 Enero 2013, 15:17 pm »

en la parte
Código:
while(i<v.size() and not encontrado)
esta de mas
Citar
and not encontrado
propongo una idea alternativa
en 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  :silbar:
Código:
#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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: modificar a la función c++
« Respuesta #3 en: 24 Enero 2013, 16:29 pm »

......................... ¿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:
Código
  1. #include<iostream>
  2. #include<vector>
  3. #include<cstdlib>/*<==HACE FALTA PARA SYSTEM ¡ ¡ ¡*/
  4. using namespace std;
  5.  
  6.  
  7. bool divisor(vector<int>v,int m){
  8. int i=0;
  9.    bool encontrado=false;
  10.    while(i<v.size() ){
  11.      if(v[i]%m==0)
  12.        cout<<"el elemento divisibles es: v["<<i<<"]= "<<v[i]<<endl;
  13.      i++;
  14.    }
  15. }
  16.  
  17.  
  18.  
  19. int main (){
  20.  
  21.    int n,i=0,e,m;
  22.    cout<<endl<<"Entre el divisor...";
  23.    cin>>m;
  24.    cout << endl << "Entre el número de elementos del vector...";
  25.    cin >> n;
  26.    vector<int> v(n);
  27.    for(i=0;i<n;i++){
  28.                     cout << "Entre el elemento " << i+1<< " del vector...";
  29.                     cin >>v[i];/*<==que es eso de: cin >> e;y luego v[i] = e;*/
  30.                     }
  31.    cout << endl;
  32.  
  33.    cout<<divisor(v,m)<<endl;
  34.    cout<<endl;
  35.    system("pause");
  36.    return 0;}
  37.  
Saluditos!.
En línea

indict

Desconectado Desconectado

Mensajes: 78


Ver Perfil
Re: modificar a la función c++
« Respuesta #4 en: 24 Enero 2013, 22:02 pm »

¡¡muy buenas explicaciones!! muchas gracias por todas las respuestas y comentarios. :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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 Último mensaje 7 Diciembre 2011, 23:45 pm
por naderST
Evaluar Una Funcion dentro de otra funcion Python
Scripting
cristiantorres 1 10,729 Último mensaje 14 Abril 2012, 06:20 am
por cristiantorres
Modificar Grub para modificar propiedades de otros distros
GNU/Linux
Puntoinfinito 7 6,063 Último mensaje 2 Agosto 2012, 01:37 am
por dato000
Funcion de modificar archivos no funciona
Programación C/C++
lifegame 2 2,051 Último mensaje 24 Mayo 2017, 15:30 pm
por lifegame
funcion de modificar
Programación C/C++
behindfa21 1 2,759 Último mensaje 4 Mayo 2022, 19:37 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines