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ú

Temas - SojatDotar

#1
Programación C/C++ / POO ordenación de arreglos
28 Febrero 2016, 15:53 PM
Buenas, tengo una duda, si tengo una clase llamada Estudiante, con los atributos privados y quisiera ordenar de menor a mayor en un procedimiento un arreglo de Estudiante


struct Estudio
{
int dia;
int mes;
int anyo;

};



class Estudiante {
private:
Estudio tiempo;
int curso;
int edad;
public:
void setTiempo(Estudio t);
Estudio getTiempo();
void setCurso(int c);
int getCurso();
void setEdad(int e);
int getEdad();
};

Ahora en el main tengo un arreglo Estudiante el tamaño del arreglo lo da el usuario y quisiera ordenar ese arreglo de estudiante de menor a mayor, como sería? ordenaria como un arreglo normal? nunca he ordenado un arreglo de objetos
#2
Buenas, hay alguna forma de en una clase A tengo variables privadas, habría una forma de que en otra clase B pueda acceder a esas variables ? es decir en la clase A tengo un rango y quisiera saber si cuando pido los datos para la clase B están en el rango de la clase A?
#3
Buenas noches, tengo una duda referente a la programación orientada a objeto y sus métodos, por ejemplo tengo definida mi clase

class circulo{
public:
void setX(float);
float getx (float);
void sety (float);
float gety (float);
private:
float x,y;
pero el (x,y) del cirulo lo ingresaria el usuario, tendría que hacer una función que me pida esas coordenadas?más o menos así?? class circulo{
public:
void setX(float);
float getx (float);
void sety (float);
float gety (float);
void pideCoordenadas(float float);
private:
float x,y;
o solo bastará con el set y get de cada coordenada ?ya que tengo entendido que el método set modifica un valor ( da un valor) y el método get(devuelve un valor) otra cosa si tengo un método set no hace falta el constructor ? o siempre tiene que haber un método constructor, independientemente que haya un método set?

void Circulo::setx(float _x)
{
x=_x;

}

float Circulo::getx(float  x)
{

return x;
}
void Circulo::sety(float _y)
{
y=_y;

}

float Circulo::gety(float  y)
{

return y;
}


void Circulo::pideCoordenadas(float x1, float y1)
{

cout<<"Teclee la coordenada"<<endl;
cin>>x>>y;
}

int main () {


Circulo miCirculo;
miCirculo.pideCoordenadas(x,y);


}

Sería así a la hora de implementar la clase y usarla en el main?
#4
Programación C/C++ / Archivos bINARIOS c++
7 Febrero 2016, 19:17 PM
Buenas tarde quisiera saber como podría hacer llenar un archivo binario desde teclado con un arrays de estructuras

#include <iostream>
#include <fstream>
using namespace std;

struct alumno{

string nombre;
string apellido;
int edad;
};

int main () {


alumno alum[50];

ofstream f;

f.open("alumnos.bin", ios::out | ios::binary);
if(f.open){

for (int i=0; i<=50; i++){

cout<<"Teclee el nombre del alumno"<<endl;
cin>>alum[i].nombre
cout<<"Teclee  el apellido"<<endl;
cin>>alum[i].apellido;
cout<<"Teclee  la edad"<<endl;
cin>>alum[i].edad;
}

}
else {
cout<<"Error al abrir el archivo"<<endl;
}
is.close();


return 0;
}
Así lo implemente pero me da error al compilar
#5
Buenas, quieor implementar una función que dados 4 datos, validar que esten ingresados correctamente y en caso contrario que los vuelva a pedir, lo hice con un do while pero no funciona como quería, si podrían ver que hice mal por favor
#include <iostream>
            using name space std;

int verificacion (int a, int b, int c, int d ){
int n2=0;

do { //ciclo que se repite mientras los datos suministrados esten malos
       //cuando sean validos los datos se sale
       //correcto b>a y d>c
cout<<"suministre a"<<endl;
cin>>a;
cout<<"suministre b"<<endl;
cin>>b;
cout<<"suministre c"<<endl;
cin>>c;
cout<<"suministre d"<<endl;
cin>>d;
cout<<" Vuelva a suministrar los datos"<<endl;
} while (a>b and c>d)

if (n2==0){ // si los datos son erroneos que la funcion retorne el siguiente mensaje
cout<<"datos suministrados erroneos"<<endl;
return n2;
n2++
}

else { // en otro caso que retorne este mensaje
cout<<"Datos suministrado correctos"<<endl;
return n2;
}



}



int main () {
int a,b,c,d,n1;

n1=verificacion(a,b,c,d);
cout<<"Los datos son :"<<n1<<endl;









}

#6
Buenas, tengo la siguiente duda, puedo comprar dos registro? es decir si quiero ver si son iguales dos registro se puede?
#7
Buenas, me podrían ayudar en hacer el recorrido de una matriz de la diagonal secundaria, una matriz de entero de modo que tenga se vea así http://prntscr.com/8ssapl lo he pensando de varias forma, pero no logro que se vea así, el código que tengo es
#include <iostream>
using namespace std;

int main () {

int mat[4][4];
int cont=1;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){

mat[j][i]=cont++;

}
}
int k=0,r=0;
for(int i=0; i<7; i++){
r=(i/4);

for(int j=k; j>=0; j--){

cout << mat[r][j]<<" ";
r++;
}
cout << endl;
k++;
k-=k/4;
}

cin.get();
return 0;
}
#8
Buenas, tenia que hacer un sudoku por partes, en la primera era validar el tablero numérico, recibiendo un número entero de 16 digitos, Cada valor representará una posición dentro del tablero numérico 4x4, dividido por cuadrantes en la que no pueda haber número repetidos, en filas, columnas o cuadrantes http://prntscr.com/8pzd7b así estaban divididos los cuadrantes, en el tablero, una cadena válida de 16 dígitos, era una que estuviera comprendida con números entero entre  1 y 4, solo se podía hacer utilizando estructura condicionales ( If, if else, switch) esa parte la logre hacer #include <iostream>
using namespace std;

int main () {


int a,b,c,d,e,f,a11,a12,a13,a14,b11,b12,b13,b14,c11,c12,c13,c14,d11,d12,d13,d14;
unsigned long long int x;
bool t=true;

cout<<"introduzca la cadena"<<endl;
cin>>x;



    a=x/100000000;
b=x%100000000;
c=a/10000;
d=a%10000;
e=b/10000;
f=b%10000;
a11=c/1000;
c=c%1000;
a12=c/100;
c=c%100;
a13=c/10;
a14=c%10;
b11=d/1000;
d=d%1000;
b12=d/100;
d=d%100;
b13=d/10;
b14=d%10;
c11=e/1000;
e=e%1000;
c12=e/100;
e=e%100;
c13=e/10;
c14=e%10;
d11=f/1000;
f=f%1000;
d12=f/100;
f=f%100;
d13=f/10;
d14=f%10;

//condicional que evalua que el contenga 16 digitos
if ((x>99999999999999999 && x<10000000000000000)){
cout<<"Entrada incorrecta la cadena  debe contener 16 digitos"<<endl;
t=false;
}
else { if (((a11!=1) and (a11!=2)  and (a11!=3)  and (a11!=4))  or // condicional que evalua que la cadena introducida contenga numeros entre 1 y 4
((a12!=1) and (a12!=2)  and (a12!=3)  and (a12!=4))  or
((a13!=1) and  (a13!=2) and (a13!=3)  and (a13!=4))  or 
((a14!=1) and  (a14!=2) and  (a14!=3) and (a14!=4))  or
((b11!=1) and  (b11!=2) and  (b11!=3) and (b11!=4))  or 
((b12!=1) and  (b12!=2) and  (b12!=3) and (b12!=4))  or 
((b13!=1) and ( b13!=2) and  (b13!=3) and (b13!=4))  or 
((b14!=1) and  (b14!=2) and  (b14!=3) and (b14!=4))  or 
((c11!=1) and  (c11!=2) and  (c11!=3) and (c11!=4))  or 
((c12!=1) and  (c12!=2) and  (c12!=3) and (c12!=4))  or 
((c13!=1) and  (c13!=2) and  (c13!=3) and (c13!=4))  or 
((c14!=1) and  (c14!=2) and (c14!=3)  and (c14!=4))  or
((d11!=1) and  (d11!=2) and  (d11!=3) and (d11!=4))  or
((d12!=1) and (d12!=2)  and (d12!=3)  and (d12!=4))  or 
((d13!=1) and  (d13!=2) and (d13!=3)  and (d13!=4))  or 
((d14!=1) and  (d14!=2) and  (d14!=3) and (d14!=4))){
        cout<<"Entrada incorrecta, la cadena solo debe poseer digitos entre 1 y 4 "<<endl;
t=false;}
else {



//condicionales que evaluan cuadrante, filas y columnas que no haya numeros repetidos


if ((a11==a12))  {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C1 :"<<
cout<<"Columna 1:"<< a11<<","<<a12<<endl;
t=false;}

if ((a11==b11)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Fila 1"<<endl;
cout<<"digitos repetidos:"<<endl;
cout<<"C1:"<<a11<<endl;
cout<<"Fila 1:"<<a11<<","<<b11<<endl;
t=false;}

if ((a11==b12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C1:"<<a11<<endl;
t=false;}

if ((a12==b11)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C1:"<<a12<<endl;
t=false;}

if ((a12==b12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C1"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C1:"<<a12<<endl;
t=false;}

if((b11==b12)) {
cout<<"Repeticion de digitos en :"<<endl;
cout<<"C1"<<endl;
cout<<"Columna 2"<<endl;
cout<<"Digitos repetidos en"<<endl;
cout<<"Columna 2:"<<b11<<","<<b12<<endl;
t=false;}

if ((a13==a14)) {
cout<<"Repeticion de digitos en"<<endl;
cout<<"C2"<<endl;
cout<<"Fila 1"<<endl;
cout<<"Digitos repetidos en "<<endl;
cout<<"Fila 1 :"<<a13<<","<<a14<<endl;
t=false;}

if ((a13==b13)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C2"<<endl;
cout<<"Columna 1"<<endl;
cout<<"Digitos repetidos en"<<endl;
cout<<"Columna 1:"<<a13<<","<<b13<<endl;
t=false;}

if((a13==b14)) {
cout<<"Repeticion de digito en:"<<endl;
cout<<"C2"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C2:"<<a13<<endl;
t=false;}


if ((a14==b13)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C2"<<endl;
cout<<"Digitos repetidos en"<<endl;
cout<<"C2:"<<a14<<endl;
t=false;}

if ((a14==b14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C2"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C2:"<<endl;
t=false;}

if ((b13==b14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C2"<<endl;
cout<<"Columna 2"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C2:"<<b13<<endl;
cout<<"Columna 2:"<<b13<<","<<b14<<endl;
t=false;}


if ((c11==c12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Fila 3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C3:"<<c11<<endl;
cout<<"Fila 3"<<c11<<","<<c12<<endl;
t=false;}

if ((c11==d11)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Columna 1"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C3:"<<c11<<endl;
cout<<"Columna 1:"<<c11<<","<<d11<<endl;
t=false;}

if((c11==d12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C3:"<<c11<<endl;
t=false;}

if ((c12==d11)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C13:"<<c12<<endl;
t=false;}

if ((c12==d12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Fila 2"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C3:"<<c12<<endl;
cout<<"Fila 2:"<<c12<<","<<d12<<endl;
t=false;}

if((d11==d12)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C3"<<endl;
cout<<"Columna 4"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C3:"<<d11<<endl;
cout<<"Columna 4:"<<d11<<","<<d12<<endl;
t=false;}

if ((c13==c14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Columna 3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C4:"<<c13<<endl;
cout<<"Columna 3:"<<c13<<","<<c14<<endl;
t=false;}

if ((c13==d13)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Fila 3"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C4:"<<c13<<endl;
cout<<"Fila 3:"<<c13<<","<<d13<<endl;
t=false;}

if ((c13==d14)) {
cout<<"Repeticion de digitos en :"<<endl;
cout<<"C4"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C4:"<<c13<<endl;
t=false;}

if((c14==d13)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Digitos repetidos"<<endl;
cout<<"C4:"<<c14<<endl;
t=false;}

if ((c14==d14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Fila 4"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"Fila 4:"<<c14<<","<<d14<<endl;
t=false;}

if ((d13==d14)) {
cout<<"Repeticion de digitos en:"<<endl;
cout<<"C4"<<endl;
cout<<"Columna 4"<<endl;
cout<<"Digitos repetidos "<<endl;
cout<<"C4:"<<d13<<endl;
cout<<"Columna 4:"<<d13<<","<<d14<<endl;
t=false;}






}

if ((t==true)) {
cout<<"solucion valida"<<endl;}
else
{cout<<"Solucion invalida"<<endl;
}

}
}
Pero ahora en la segunda, me piden hacer http://prntscr.com/8pznkkhttp://prntscr.com/8pznxqhttp://prntscr.com/8pzoa8http://prntscr.com/8pzokypudiendo utilizar, acciones, funciones, ciclos, arreglos, matrices, registro, hice este código ( Aclaro que esta mal, ya que no hace lo que me piden que haga) #include <iostream>
using namespace std;

int mat[9][9];


bool ValidarTablero() {//función que valida que el tablero tenga una solucion valida

bool ver=true;

int cont=0,c=0;

for(int i=cont+1;i<9;i++) {
for(int j=0;j<9;j++) {

if (mat[cont][j]==mat[i][j])
{if (c>1){{cout<<"Solucion invalida"<<endl;}

ver=false;}
else
{cout<<"Solucion Valida"<<endl;
ver=true;}
}
}

cont++;

return (ver);
}
}


void MostrarTablero(){//función que muestra el tablero actual




for(int i=0;i<9;i++){
for(int j=0;j<9;j++){

cout  <<  mat[i][j];

}
cout<<""<<endl;
}

}




bool ValidarInsercion () {
bool validar=true;
int x,y,n;

cout<<"ingrese la coordenada x"<<endl;
cin>>x;
cout<<"ingrese la coordenada y"<<endl;
cin>>y;
cout<<"ingrese el valor"<<endl;
cin>>n;
for (int i =0; i<9; i++){
if (mat[x][i]==n || mat[i][y]==n) {
  validar=true;
  break;

if (validar==true){
  cout<<"valor repetido"<<endl;
}

return (validar);
}
}



//accion principal

int main () {

int op,op1;

//llena la matriz con puros 0
for (int i=0; i<9; i++){
for (int j=0; j<9; j++){
mat[i][j]=0;
mat[0][3]=1;
mat[1][2]=5;
mat[2][7]=2;
mat[3][1]=7;
mat[4][4]=3;
mat[5][1]=5;
mat[6][5]=4;
mat[7][6]=3;
mat[8][8]=1;
}
}







//menu de opciones para la diferente modalidades del juego

cout<<"******MENU******"<<endl;
cout<<"Eliga la opcion que desea utilizar"<<endl;
cout<<"1: Cargar Tablero"<<endl;
cout<<"2: Jugar"<<endl;
cout<<"3: Salir"<<endl;
cin>>op;


switch(op) {

case 1:
break;

case 2:
cout<<"1: Jugada"<<endl;
cout<<"2: Mostrar Tablero"<<endl;
cout<<"3: Validar"<<endl;
cout<<"4: Regresar"<<endl;
break;
cout<<"Jugar"<<endl;
cout<<"Mostrar tablero"<<endl;
cout<<"Validar"<<endl;
cout<<"Regresar"<<endl;
cin>>op1;
switch (op1){
case 1:ValidarInsercion();
break;

case 2:
MostrarTablero();
break;

case 3:
ValidarTablero();
break;

}





}





return 0;
}
Quisiera saber si pudieran examinar esas acciones y funciones que hice y pudieran aclararme en que falle, y la duda es referente me dijeron que hay una formula de saber si un número esta repetido en un cuadrante o fila con una formula matemática ¿Es cierto? como puedo aplicar eso en mi código, espero me puedan ayudar, gracias
#9
Buenas, intento hacer una función en c++, en donde me diga dada una matriz 9x9 si hay un número repetido en filas o columnas, lo intente hacer así

for (int i=0; i<9; i++){
if ( j !=x) {
}
if ( mt[x][j]==x) {
}
return false;


for (int j=0; j<9; j++) {
if (j != x){
}
if (mat [j][x]==x){
}
return false;
}


pero no me verifica como tal cual numero esta repetido en filas o columnas
#10
Programación C/C++ / Duda
24 Mayo 2015, 03:54 AM
Buenas, como verifico que un número tenga 16 digitos? solo utilizando if, else o swicth