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 - andrex.125

#11
Cita de: Black Master en 29 Mayo 2013, 19:22 PM
Código (cpp) [Seleccionar]
if (numfilas == numcolumnas)

Está comparando el numero de filas con el numero de columnas...
Mira tus matrices... 3!=2

Exacto, pero es que debería arrojarme el mensaje solamente, pero me arroja también la multiplicación.
#12
hola , tengo una duda, estoy haciendo un programa sobre matrices donde sumo, resto y multiplico, mi error es en la multiplicación, se sabe que para multiplicar dos matrices la condición es: que el número de columnas de la matriz A sea igual al número de filas de matriz B, ya realice todo el código en esta parte, ahora si el error estoy intentando hacer una comprobación con un if para que me multiplique solo cuando el numero de filas sea igual al numero de columnas y de lo contrario me muestre un mensaje, el problema es que me arroja la multiplicación y el mensaje.


Matriz Matriz::MultiDosMarices (Matriz m) //se crea objeto Matriz para guardar resultado de la multiplicacion de las dos matrices
{
Matriz mul (numfilas, numcolumnas);
if (numfilas == numcolumnas)
{
for (int i=0;i<numfilas;i++)
    {
    for (int j=0;j<numcolumnas;j++)
{
mul.matriz [i][j]=0;
for (int k=0;k<numcolumnas;k++)
{
mul.matriz[i][j]=mul.matriz[i][j]+matriz[i][k]* m.matriz[k][j];
}          
}

    }
  return mul;
  }
  else
  {
  cout<<"esta multiplicacion no se puede realizar."<<endl;
  }
}


Esta es la captura:


Gracias.
#13
Muchas gracias s00rk, no había caído en cuenta de eso.
Saludos.
#14
hola, mi problema es el siguiente; tengo una variable clase de tipo int, lo que necesito es que cuando clase sea = 1, me retorne "Ejecutiva" y cuando clase = 2, me retorne "Economica", lo implemente de esta forma pero obviamente me falta algo.


int Sillas::getclase()
{
string M = " ";
if (clase == 1)
{
return M = "Ejecutiva";

}
else
{
return M="Economica";
}
     
}


#15
ahora solo tengo que hablar con la profe, para que explique mejor este tema.
#16
muchas gracias a todos, ya entiendo mejor los vectores.
#17
ThePinkPanther

muchas gracias por la ayuda, ya comprendí un poco del operador new.
con respecto al ejemplo de la profesora ya me tocaría resolverlo con ella.

Muchas gracias.

#18
Cita de: ThePinkPanther en 10 Mayo 2013, 03:39 AM
Escalar::Escalar(int s)
{
   S=s;
vectorV[S];
vectorW[S];

}


No puedes realizar este tipo de cosas..

Si quieres usar arrays de forma dinamica dimensionados por el usuario ,deberas utilizar asignación dinamica de memoria, en c++ , tienes el operador new , y delete para asignar y liberar respectivamente, y en C tienes las funciones malloc,calloc, realloc y free .


tu clase modificada mas o menos quedaría..


class Escalar
{
private:
double *vectorV;
double *vectorW;
int S;

public:
       Escalar();
Escalar(int s);
~Escalar();
void setS(int s);
int getS();
double llenarvectores();
double CalcularEscalar();

};


Fijate, la declaración de vectorV y vectorW

Equitativamente, tu constructor va a iniciar tus punteros reservando memoria según la cantidad de datos que el usuario pidio..

Escalar::Escalar(int s)
{
   S=s;
vectorV=new double[s];
vectorW=new double[s];


}


Y por ultimo,no estoy muy familiarizado con la poo , pero creería que tu destructor , tendría que borrar la memoria reservada , antes que se termine el ámbito de los punteros
.

Esto se hace con delete vectorV[];  ( ejemplo borrando memoria reservada para vectorV )



Saludos , espero a ver sido claro y a verte ayudado .

Muchas gracias, me sirvió mucho tu ayuda.
pero tengo una duda, mi compilador es dev C++, y estoy programando en C++, la profesora  nos dio un ejemplo para guiarnos, en ese ejemplo esta de la forma que escribí mi código, la diferencia es que a la profesora le corre el programa.
mira este es el ejemplo con que me base para hacer el mio.

class Calificacion
{
  private: 
  int codCurso;
  int cantidadEst;
  double notas[];

  public:   
    Calificacion();
    Calificacion(int cod, int cant);
    ~Calificacion();
     void setCurso(int c);
     int getCurso();
     void setCantidadEst(int est);
     int getCantidadEst();
     void llenarNotas();
     void mostrarNotas();
     double promedioNotas();
     double notaMayor();
   
   
};

#include "Calificacion.h"
#include <iostream>
using namespace std; 



Calificacion::Calificacion()
{
}

Calificacion::Calificacion(int cod, int cant)
{
     codCurso=cod;
     cantidadEst=cant;
     notas[cantidadEst];
}

void Calificacion::setCantidadEst(int est)
{
  cantidadEst=est;

  }
 
  int Calificacion::getCurso()
  {
      return codCurso;
  }
 
  int Calificacion::getCantidadEst()
  {
      return cantidadEst;
  }

void Calificacion::llenarNotas()
{
    for (int i=0;i<cantidadEst; i++)
      {
       cout<<" ingrese la nota["<<i<<"]\t";
       cin>>notas[i];
       cout<<endl;
      }
}

double Calificacion::notaMayor()
{
     double mayor=notas[0]; //para empezar se inicializa mayor con primer elemento del arreglo
      for (int i=1;i<cantidadEst; i++)
      {
         if (notas[i]>mayor)
            mayor=notas[i];
      }     
     return mayor;   
}

void Calificacion::mostrarNotas()
{
    cout<<"Las notas ingresadas son: "<<endl;
    for (int i=0;i<cantidadEst; i++)
      {
       cout<<"nota["<<i<<"]="<<notas[i];
       cout<<endl;
      }
}

Calificacion::~Calificacion()
{
}

void Calificacion::setCurso(int c)
{
  codCurso = c;
}

double Calificacion::promedioNotas()
{
     double prom=0.0;
   
    for (int i=0;i<cantidadEst; i++)
      {
       prom=prom+notas[i];
      }
     prom=prom/cantidadEst;
     
     
      return prom;
}

#include "Calificacion.h"
#include <iostream>
using namespace std; 

int main()
{
    int cant, cod;
     
   
    cout<<"Cual es el codigo del curso? ";
    cin>>cod;
    cout<<"Cuantas notas va a ingresar? ";
    cin>>cant;
    Calificacion cal(cod,cant);
    cal.llenarNotas();
    cal.mostrarNotas();
    cout<<"el promedio de las notas del curso "<<cal.getCurso()<<" es "<<cal.promedioNotas()<<endl;
    cout<<"La nota mayor es "<<cal.notaMayor()<<endl;
           
   
   system("PAUSE"); //Para que espere a que el usuario digite una tecla
   return EXIT_SUCCESS;
   
 
}
#19
Programación C/C++ / Ayuda con ciclo for C++
10 Mayo 2013, 02:53 AM
Buenas noches,  estoy haciendo un trabajo de la universidad es un programa sencillo, el programa tiene que calcular el producto escalar de dos vectores, los vectores son de tamaño n, el usuario digita el tamaño, tengo un método con un ciclo for que recorre el vector y llena los espacios, pero aquí me encuentro con un problema y es que si por ejemplo el usuario digita 2, el programa debería dejarme digitar 2 veces el valor del vector para cada espacio, pero solo me deja digitar 1 vez. quisiera que me ayudaran por que no se cual es mi error. Gracias.

Escalar.h
class Escalar
{
private:
double vectorV[];
double vectorW[];
int S;

public:
        Escalar();
Escalar(int s);
~Escalar();
void setS(int s);
int getS();
double llenarvectores();
double CalcularEscalar();

};


Escalar.cpp

using namespace std;
Escalar::Escalar()
{

}
Escalar::Escalar(int s)
{
    S=s;
vectorV[S];
vectorW[S];

}
int Escalar::getS()
{
return S;
}
void Escalar::setS(int s)
{
S = s;
}

double Escalar::llenarvectores()
{

for(int i=0;i<S;i++)
{
cout<< "digite el valor del vector V en la posicion " <<i <<" : ";
cin>>vectorV[i];
cout<< "digite el valor del vector W en la posicion " <<i <<" : ";
cin>>vectorW[i];

}
}
double Escalar::CalcularEscalar()
{
   
double multi = 0.0;
for(int i=0; i <S; i++)
{
multi = multi+vectorV[i]*vectorW[i];

}
cout<<multi;

}
Escalar::~Escalar()
{
}


main.cpp

using namespace std;
int main()
{
cout<<"Digite el tamaño de los vectores: ";
int s;
cin>>s;
Escalar Z(s);
Z.llenarvectores();
Z.CalcularEscalar();
cout<<endl;

}