Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - MellaSystems

#11
Siii ivan, tienes alguna idea?
#12
Tengo este codigo en C++:

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>

using namespace std;

main(){

int i, j, filas, columnas, suma_dp=0;
cout << "Ingrese el n\243mero de filas de la matriz: ";
cin >> filas;
cout << "Ingrese el n\243mero de columnas de la matriz: ";
cin >> columnas;

if((filas < 1 || columnas < 1) || (filas > 20 || columnas > 20)){
cout << "La matriz no puede ser menor que 1 ni mayor que 20\n\n";
}
else{
cin.get();
float **a = new float*[filas];
cout << endl;
for(i=0; i < filas; i++){
a[i] = new float[columnas];
for(j=0; j < columnas; j++){
cout << "Ingrese el elemento A[" << i + 1 << "][" << j + 1 << "]: ";
cin >> a[i][j];
}
}
cout << endl;
cout << "La matriz digitada es: " << endl;
for(i=0; i < filas; i++){
cout<<"|";
for(j=0; j < columnas; j++){
cout << "\t" << a[i][j] <<"\t";
}
cout << "|" << endl;
}

cout << "La diagonal principal es: " << endl;
for(i=0; i < filas; i++){
cout<<"|";
for(j=0; j < columnas; j++){
if(a[i]==a[j])
cout << "\t" << a[i][j];
if(i-j == 0)
suma_dp += a[i][j];
}
cout << "|" << endl;
}
cout << "La suma es: " << suma_dp;

}
cout << endl;
system("pause");
return EXIT_SUCCESS;

}


Quiero hacerlo usando la STL.

Alguien me orienta?

PTDA: Se trabajar con Vectores de una dimensión usando la STL
#13
Programación C/C++ / Re: Sugerencias!
14 Marzo 2015, 01:05 AM
Gracias a ambos sus respuestas me sirvieron. Otacu me ayudaste ya que mi Iteradores de salía de rango e Iván me aclaró la lógica de mi algoritmo
#14
Mira Cristian debes de crear hacer un ciclo que recorra el string caracter por caracter, luego le pones una condicion para que si encuentra una palabra (ya sea separada por espacio o cualquier signo de puntuacion o caracter especial) que le haga el reverse, y la guardas en el string personal y guardas la posicion tambien. Y le hace el reverso por palabras y la vas colocando al inicio del string.
#15
Programación C/C++ / Sugerencias!
13 Marzo 2015, 03:56 AM
Tengo esta funcion para agregar un string a un vector, pero con la condicion de no  tener nombres repetidos pero me explota el programa.

Código (cpp) [Seleccionar]
void addNomEst(){
                  system("cls");
                  cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<MENU INSERTAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                  string nombre;
                  int PosNom= 0, j=0;
                  cout<<"Digite el nombre que desea agregar: ";
                  cin.ignore(256,'\n');
                  cin >> nombre;
                  for(it = NomEst.begin(); it != NomEst.end(); ++it){
                     if((*it) == nombre){     
                        PosNom++;     
                           }
                          } if (PosNom > 0){
                        j++;
                        system ("cls");
                        cout << "\n\nESTE NOMBRE YA EXISTE!!!" << endl;
                        cout << "\n\nFAVOR DIGITAR OTRO NOMBRE DE ESTUDIANTE DIFERENTE\n" << endl;                                          
                        system("pause");
                       }PosNom = 0;
                         NomEst.push_back(nombre);
                        if(j==1){
                           NomEst.erase(it);
                           vector<string>::iterator itTemp = --it;
                           PosNom++;
                        }
                        j=0;
                  system("pause");
                  }



miren la imagen.

#16
Gracias y mil gracias por tan buena explicacion efeiron. les puse unas condiciones mas al codigo y ya hace lo que quiero Thanks.

mira las modificaciones

Código (cpp) [Seleccionar]
void deletNomEst(){
                  system("cls");
                  cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<<MENU BORRAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                  string borrar;
                  int cont = -1;
                  cout<<"Digite el nombre que desea borrar: ";
                  cin.ignore(256,'\n');
                  cin >> borrar;
                  for(it = NomEst.begin(); it != NomEst.end(); ++it){
                     if((*it) == borrar){     
NomEst.erase(it);
vector<string>::iterator itTemp = --it;
                        cont++; 
                        cout<<"\nEl nombre fue borrado con Exito\n\n";   
                           }
                          } if (cont == -1){
                       cout << "El nombre a borrar no existe\n\n";
                       }cont = -1;
                  system("pause");
                  }
void seachNomEst(){
                  system("cls");
                  string buscar;
                  int PosNom=-1;
                  cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<<MENU BUSCAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                  cout<<"Digite el nombre que desea buscar: ";
                  cin >> buscar;
                  cin.ignore(256,'\n');
                  for(it = NomEst.begin(); it != NomEst.end(); it++){
                         if((*it) == buscar ){
                          PosNom++;
                          cout<<"\nEl nombre ["<< *it << "] se encuentra en la lista"<<endl;       
                           }       
                         }if(PosNom == -1){
                          cout<<"El nombre digitado no se encuentra en la lista\n";         
                          }     
                  PosNom ==-1;
                  system("pause");
                  }


#17
Efeiron por las ayudas que nos brindas. Estos algoritmos se ha vuelto un reto para mi. Ahora mira lo que pasa. Si inserto 3 Nombres con el metodo insertar. Ej: Jose, Rosa y Maria.

Ahora le agregue un else al metodo borrar, al yo seleccionar la opcion borrar, si borro el de las ultimas posiciones mira como sale:



y lo mismo le agregue al metodo buscar, al buscar una posicion que no sea la posicion 0 mira lo que sale:



Metodo Borrar:
Código (cpp) [Seleccionar]
void deletNomEst(){
                  system("cls");
                  cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<<MENU BORRAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                  string borrar;
                  cout<<"Digite el nombre que desea borrar: ";
                  cin.ignore(256,'\n');
                  cin >> borrar;
                  for(it = NomEst.begin(); it != NomEst.end(); ++it){
                     if((*it) == borrar){     
                        vector<string>::iterator itTemp = --it;
NomEst.erase(itTemp); 
                        cout<<"\nNombre borrado con Exito\n\n";   
                              }
                        else
                        cout<<"\nEl nombre digitado no existe\n\n";
                  }
                  system("pause");
                  }


Metodo Buscar:
Código (cpp) [Seleccionar]
void seachNomEst(){
                  system("cls");
                  string buscar;
                  cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<<MENU BUSCAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                  cout<<"Digite el nombre que desea buscar: ";
                  cin >> buscar;
                  cin.ignore(256,'\n');
                  for(it = NomEst.begin(); it != NomEst.end(); it++){
                         if((*it) == buscar ){
                          cout<<"\nEl nombre ["<< *it << "] se encuentra en la lista"<<endl;       
                           }
  cout<<"El nombre digitado no se encuentra en la lista\n";       
                         }       
                  system("pause");
                  }


y mas adelante uso la libreria "algorithm", porque quiero hacerlo con los metodos mas complejos tambien usaré el metodo find_if().
#18
Gracias por la sugerencia efeiron es de gran ayuda tu aclaracion, pero mira mi error en el codigo. Si iinserto dos nombres al querer buscar uno me salen los dos AYUDA PLEASE.

Código (cpp) [Seleccionar]
#include <iostream>
#include <string>          
#include <vector>
#include <algorithm>

using std::vector;
using std::cout;
using std::cin;
using std::string;
using std::endl;

class cEstudiante{
       private:
            vector<string> NomEst;    
       public:
            void setNomEst(const vector<string>& pNomEst){NomEst = pNomEst;}
            vector<string> getNomEst(){return NomEst;}  
            vector<string>::iterator it;
           
            void addNomEst(){
                 system("cls");
                 cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<MENU INSERTAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                 string nombre;
                 cout<<"Digite el nombre que desea agregar: ";
                 fflush(stdin);
                 cin >> nombre;
                 NomEst.push_back(nombre);
                 system("pause");
                 }
                 
            void deletNomEst(){
                 system("cls");
                 cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<<MENU BORRAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                 string borrar;
                 cout<<"Digite el nombre que desea borrar: ";
                 fflush(stdin);
                 cin >> borrar;
                 for(it = NomEst.begin(); it != NomEst.end(); ++it){
                    if((*it) == borrar){      
                       NomEst.erase(it);
                       --it;  
                       cout<<"\nNombre borrado con Exito\n\n";    
                             }
                 }
                 system("pause");
                 }
           
            void showNomEst(){
                 system("cls");
                 cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<<MENU LISTAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                 cout<<"\n\n\t\tLos nombres digitados son: "<<endl<<endl;
                 for(it = NomEst.begin(); it != NomEst.end(); ++it){
                        cout << *it << endl;
                        }
                 cout << endl;
                 system("pause");
                 }
           
            void seachNomEst(){
                 system("cls");
                 string buscar;
                 cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<<MENU BUSCAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                 cout<<"Digite el nombre que desea buscar: ";
                 fflush(stdin);
                 cin >> buscar;
                 for(it = NomEst.begin(); it != NomEst.end(); it++){
                        if((*it) == buscar ){
                         cout<<"\nEl nombre ["<< *it << "] se encuentra en la lista"<<endl;        
                          }      
                        }      
                 system("pause");
                 }
                         
     };

main(){
            cEstudiante ObjEst;
           
            int OpcMen, sigue = 1; //Variables para controlar el menu
            do {
            system("cls");
    system ("color F0");
            cout << "\n\n\t\t<<<<<<<<<<<<<<<<<<<<<<<<MENU>>>>>>>>>>>>>>>>>>>>>>>>>>\n" << endl;
            cout << "\n\n 1  ---> INSERTAR NOMBRE" << endl;
            cout << " 2  ---> BORRAR NOMBRE" << endl;
            cout << " 3  ---> MOSTRAR NOMBRE" << endl;
            cout << " 4  ---> BUSCAR NOMBRE" << endl;
            cout << " 0  ---> SALIR" << endl << endl;
            cout<<"\n\t ---> INGRESE SU OPCION: ";
    while(!(std::cin>>OpcMen))
            {
     std::cin.clear();
     std::string error;
     std::cin>>error;
     system("cls");
             cout<<"\n\tLA OPCION INGRESADA NO EXISTE\n";
     cout<<"\n\tIngrese su opci\242n nuevamente: ";
             }
        switch(OpcMen) {
    case 1:
                    ObjEst.addNomEst();                        
                break;
               
    case 2:
                      ObjEst.deletNomEst();                      
break;

    case 3:
                      ObjEst.showNomEst();
break;
                     
                case 4:
                     ObjEst.seachNomEst();
break;
                case 0:
 sigue = 0;
break;
                default:
                           cout<<"\t\tLA OPCION INGRESADA NO EXISTE\n";
                       system("cls");
}
} while(sigue);      
}


Entonces si inserto dos nombres y le doy a buscar o borrar uno de ellos me cosas que no deberia.
#19
me da este error al ejecutar el programa:
29 C:\Users\JuanaG\Programacion\Estructura de Datos\OtroVectorEstructurado.cpp invalid use of void expression

Código (cpp) [Seleccionar]
class cEstudiante{
       private:
            string NomEst;    
       public:
            void setNomEst(string pNomEst){NomEst = pNomEst;}
            string getNomEst(){return NomEst;}  
            vector<string> vEstudiante;
            vector<string>::iterator it;
            void addNomEst(){
                 string nombre;
                 cout<<"Digite el nombre que desea agregar: ";
                 cin >> nombre;
                 for(it = vEstudiante.begin(); it != vEstudiante.end(); it++){
                   vEstudiante.push_back(setNomEst(nombre));
                 }
                 system("pause");
                 }
           
            void showNomEst(){
                 cout<<"Los nombres digitados son: "<<endl;
                 for(it = vEstudiante.begin(); it != vEstudiante.end(); ++it){
                        cout << *it;
                        }
                 cout << endl;
                 system("pause");
                 }
                         
     };


ya solucione mi error, tarde pero lo solucione... para cualquier duda:

Código (cpp) [Seleccionar]
class cEstudiante{
       private:
            vector<string> NomEst;    
       public:
            //cEstudiante(string nombre): NomEst(nombre){}
            void setNomEst(vector<string> pNomEst){NomEst = pNomEst;}
            vector<string> getNomEst(){return NomEst;}  
            vector<string>::iterator it;
           
            void addNomEst(){
                 system("cls");
                 cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<MENU INSERTAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                 string nombre;
                 cout<<"Digite el nombre que desea agregar: ";
                 fflush(stdin);
                 cin >> nombre;
                 NomEst.push_back(nombre);
                 system("pause");
                 }

void showNomEst(){
                 system("cls");
                 cout<<"\n\n\t   <<<<<<<<<<<<<<<<<<<<<MENU LISTAR>>>>>>>>>>>>>>>>>>>>>>>\n\n\n";
                 cout<<"\n\n\t\tLos nombres digitados son: "<<endl<<endl;
                 for(it = NomEst.begin(); it != NomEst.end(); ++it){
                        cout << *it << endl;
                        }
                 cout << endl;
                 system("pause");
                 }
#20
Siii y mucho efeiron


Enviado desde mi iPhone utilizando Tapatalk