|
Mostrar Mensajes
|
Páginas: 1 2 3 [4] 5 6
|
31
|
Programación / Programación C/C++ / Re: No entiendo este error - Ayuda
|
en: 23 Diciembre 2018, 23:54 pm
|
Sacando string nom_ape del switch me ha funcionado.
Si, extendiendo el error, dice que sacando el nom_ape, funcionaría, pero el tema es, que si lo saco, no cargaría el nombre del Docente jaja Igual no entiendo que problema le puede ocasionar ese string al programa
|
|
|
33
|
Programación / Programación C/C++ / No entiendo este error - Ayuda
|
en: 23 Diciembre 2018, 22:31 pm
|
Buenas, les adjunto el código, prácticamente todo esta bien, ya no sé si lógicamente pero al compilar por lo menos sí. Aquí el código: #include <iostream> using namespace std; using namespace std; struct Fecha{ int dd,mm,aa; }; /* Estado civil: -1"soltero" 0 "casado" 1 "viudo" */ class Persona{ string nom_ape; int DNI, estado_civil; Fecha fecha_nacimiento; public: void Cargar_datos(string _nom, int _dni, int _civil, Fecha _d_nacimiento); int Edad(Fecha _actual){ //retorno la edad; int aux=_actual.aa-fecha_nacimiento.aa; return aux; } string Ver_nombre(){ return nom_ape; } }; void Persona:: Cargar_datos(string _nom, int _dni, int _civil, Fecha _d_nacimiento){ nom_ape=_nom; DNI=_dni; estado_civil=_civil; fecha_nacimiento=_d_nacimiento; } class Alumno: public Persona{ float promedio; int cantidad_aprovadas; public: void Agregar_prom(float _prom){ promedio=_prom; } void Materias_apro(int _apro){ cantidad_aprovadas=_apro; } float Ver_promedio(){ return promedio; } float Merito_academico(){ float aux=promedio*cantidad_aprovadas; return aux; } }; class Docente:public Persona{ Fecha ingreso; public: void Agregar_fecha_ingreso(Fecha _f){ ingreso=_f; } int Antiguedad(Fecha _actual){ int aux=ingreso.aa-_actual.aa; return aux; } }; class Curso{ string nombre_curso; Docente D; Alumno *A=nullptr; int size; public: Curso(int _i){ if(_i<=50){ size=_i; A=new Alumno [size]; }else{ cerr<<"Supero el limite maximo de alumnos (50)"<<endl; exit(1); } } void Agregar_docente(Docente _d){ D=_d; } void Agregar_alumno(Alumno _a, int _i){ A[_i]=_a; } void Nom_d_curso(string _nom){ nombre_curso=_nom; } Alumno Mejor_promedio(); }; Alumno Curso::Mejor_promedio(){ Alumno aux=A[0]; for(int i=1;i<size;i++) { if(aux.Ver_promedio()<A[i].Ver_promedio()){ aux=A[i]; } } return aux; } int main(int argc, char *argv[]) { int size; Alumno A; Docente D; cout<<"Ingrese la cantidad de alumnos en el curso: "; cin>>size; Curso C(size); cout<<"Seleccione la opcion para proceder :"; cout<<"1 -> Agregar alumnos"<<endl; cout<<"2 -> Agregar Docente a cargo"<<endl; cout<<"Presione cualquier numero para salir del programa"<<endl; int caso; cin>>caso; switch(caso){ case 1: cout<<"Ahora ingrese los datos de los alumnos:"<<endl; for(int i=0;i<size;i++) { string nom_ape; int dni,estado_civil,materias_apro; Fecha d_nacimiento; float promedio; cout<<"Ingrese el nombre y apellido: "; cin>>nom_ape; cout<<"Ingrese el DNI: "; cin>>dni; cout<<"Ingrese el estado civil: "; cin>>estado_civil; cout<<"Ingrese la fecha de nacimiento :"; cin>>d_nacimiento.dd; cin>>d_nacimiento.mm; cin>>d_nacimiento.aa; cout<<"Ingrese el promedio del alumno :"; cin>>promedio; cout<<"Ingrese la cantidad de materias aprovadas: "; cin>>materias_apro; cout<<"-----------------------------"<<endl; A.Cargar_datos(nom_ape,dni,estado_civil,d_nacimiento); A.Materias_apro(materias_apro); A.Agregar_prom(promedio); C.Agregar_alumno(A,i); } break; case 2: cout<<"Ingrese los datos del Docente"<<endl; string nom_ape; int dni,estado_civil; Fecha d_nacimiento, ingreso_laboral; cout<<"Ingrese el nombre y apellido: "; cin>>nom_ape; cout<<"Ingrese el DNI: "; cin>>dni; cout<<"Ingrese el estado civil: "; cin>>estado_civil; cout<<"Ingrese la fecha de nacimiento :"; cin>>d_nacimiento.dd; cin>>d_nacimiento.mm; cin>>d_nacimiento.aa; cout<<"Ingrese la fecha de ingreso laboral :"; cin>>ingreso_laboral.dd; cin>>ingreso_laboral.mm; cin>>ingreso_laboral.aa; cout<<"-------------------------------"<<endl; D.Cargar_datos(nom_ape,dni,estado_civil,d_nacimiento); D.Agregar_fecha_ingreso(ingreso_laboral); break; default: //Me da error... cout<<"Salio del programa"<<endl; break; } cout<<"El alumno con mejor promedio es: "; Alumno aux=C.Mejor_promedio(); cout<<aux.Ver_nombre(); return 0; }
al compilar me da este error: error: jump to case label [-fpermissive]
|
|
|
34
|
Programación / Programación C/C++ / Re: Método de clase no funciona - Ayuda
|
en: 23 Diciembre 2018, 01:01 am
|
Hola! Lo que deberías hacer es algo como: switch (A.mm){ case 1: //A.mm vale 1, osea mes = Enero if(A.dd>=20){ //Del 20 al final es Acuario aux= "Acuario"; } else { //Del 1 al 19 es Capricornio aux= "Capricornio"; } break;
Saludos! Muchisimas gracias!!! Me ha funcionado! Gracias por tomarte la molestia de responder y ayudarme
|
|
|
35
|
Programación / Programación C/C++ / Re: Método de clase no funciona - Ayuda
|
en: 21 Diciembre 2018, 00:49 am
|
El switch está controlado por un valor de A.mm Es superfluo hacerlo parte del if que acompaña cada opción es imposible que el valor sea simultáneamente un valor y además cumpla las condiciones de los if. .
Entiendo, entonces, no debería utilizar el switch? Cómo debería proceder?
|
|
|
36
|
Programación / Programación C/C++ / Método de clase no funciona - Ayuda
|
en: 20 Diciembre 2018, 02:11 am
|
Buenas, aquí les adjunto el código que hice, la verdad es que no entiendo por qué no devuelve nada, probé dándole un valor entre 1 - 12 y según ese valor retornar "x" string. Peeeero tampoco anduvo, me ayudan por favor?#include <iostream> using namespace std; struct Fecha{ int dd,mm,aa; }; class Fecha1{ Fecha A; public: //A Fecha1(int _dd,int _mm, int _aa){ A.dd=_dd; A.mm=_mm; A.aa=_aa; } //B int Ver_dd(); int Ver_mm(); int Ver_aa(); //C int Diferencia_en_anios(Fecha1 _a); //D string Signo_zodiacal(); }; int Fecha1:: Ver_dd(){ return A.dd; } int Fecha1:: Ver_mm(){ return A.mm; } int Fecha1:: Ver_aa(){ return A.aa; } int Fecha1::Diferencia_en_anios(Fecha1 _a){ return _a.Ver_aa()-A.aa; } /* Acuario: 20 Enero – 18 Febrero. Piscis: 19 Febrero – 20 Marzo. Aries: 21 Marzo – 19 Abril. Tauro: 20 Abril – 20 Mayo. Géminis: 21 Mayo – 20 Junio. Cáncer: 21 Junio – 22 Julio. Leo: 23 Julio – 22 Agosto. Virgo: 23 Agosto – 22 Septiembre Libra: 23 Septiembre - 22 Octubre Escorpio: 23 Octubre - 21 Noviembre Sagitario: 22 Noviembre - 21 Diciembre Capricornio: 22 Diciembre - 19 Enero */ string Fecha1::Signo_zodiacal(){ string aux; switch (A.mm){ case 1: if(A.dd>=20 && A.mm>=1){ if(A.dd<=18 && A.mm<=2){ aux= "Acuario"; } } break; case 2: if(A.dd>=19 && A.mm>=2){ if(A.dd<=20 && A.mm<=3){ aux= "Piscis"; } } break; case 3: if(A.dd>=21 && A.mm>=3){ if(A.dd<=19 && A.mm<=4){ aux= "Aries"; } } break; case 4: if(A.dd>=20 && A.mm>=4){ if(A.dd<=20 && A.mm<=5){ aux= "Tauro"; } } break; case 5: if(A.dd>=21 && A.mm>=5){ if(A.dd<=20 && A.mm<=6){ aux= "Geminis"; } } break; case 6: if(A.dd>=21 && A.mm>=6){ if(A.dd<=22 && A.mm<=7){ aux= "Cancer"; } } break; case 7: if(A.dd>=23 && A.mm>=7){ if(A.dd<=22 && A.mm<=8){ aux= "Leo"; } } break; case 8: if(A.dd>=23 && A.mm>=8){ if(A.dd<=22 && A.mm<=9){ aux= "Virgo"; } } break; case 9: if(A.dd>=23 && A.mm>=9){ if(A.dd<=22 && A.mm<=10){ aux= "Libra"; } } break; case 10: if(A.dd>=23 && A.mm>=10){ if(A.dd<=21 && A.mm<=11){ aux= "Escorpio"; } } break; case 11: if(A.dd>=22 && A.mm>=11){ if(A.dd<=21 && A.mm<=12){ aux= "Sagitario"; } } break; case 12: if(A.dd>=22 && A.mm>=12){ if(A.dd<=19 && A.mm<=1){ aux= "Capricornio"; } } break; } return aux; } int main(int argc, char *argv[]) { Fecha1 A(29,2,1996),B(30,5,2018); cout<<"Edad: "<<A.Diferencia_en_anios(B)<<endl; cout<<"Su signo es: "<<A.Signo_zodiacal(); //No muestra el signo...... return 0; }
|
|
|
37
|
Programación / Programación C/C++ / Re: Problema ejercicio de class - CONSULTA
|
en: 18 Diciembre 2018, 02:06 am
|
Es muy complicado ver bien el polinomio cuando se muestra, si de momento no quieres gastar tiempo en eso añade al menos un espacio entre monomios. Suerte Buenas, ya pude arreglar casi todo, los únicos métodos que no funcionan son estos, te paso el código además: //C) Polinomio Sumar_polinomio(Polinomio P2){ //Asi es como me decias que tenia que hacerlo? if(P2.grado<grado){ Polinomio aux(grado); for(int i=0;i<P2.grado;i++) { aux.monomio[i]=P2.monomio[i]+monomio[i]; } for(int i=P2.grado;i<grado;i++) { aux.monomio[i]=monomio[i]; } return aux; }else{ Polinomio aux(P2.grado); for(int i=0;i<grado;i++) { aux.monomio[i]=P2.monomio[i]+monomio[i]; } for(int i=grado;i<P2.grado;i++) { aux.monomio[i]=monomio[i]; } return aux; } } //D) int Evaluar_polinomio(int _x){ int contador=0; for(int i=0;i<=grado;i++) { contador+=(monomio[i])*(pow(_x,i)); //El resultado que obtengo siempre es 1 menos que el verdadero } return contador; }
|
|
|
38
|
Programación / Programación C/C++ / Re: Consulta - Punteros
|
en: 18 Diciembre 2018, 00:56 am
|
Y usas la función <int comparacion(Persona p1, Persona p2)> para comparar cada dos personas del array. Suerte Te soy sincero, no entiendo la aplicación, tengo una forma de hacerlo, pero no usaría ese maldito puntero Hice esto, pero hasta ahí llegue con lo que me explicaste y llegue a entender, obviamente, no funciona alumno Busca_mayor(alumno a[], int size, int (*p)(alumno a1, alumno a2)){ alumno aux; for(int i=0;i<size;i++) { if(*p(a[i],a[i+1])<0){ aux=a[i+1]; }else{ if(*p(a[i],a[i+1])>0){ aux=a[i]; } } } return aux; } int Compara_nombre(alumno a1, alumno a2){ if(a1.nombre<a2.nombre){ return -1; }else{ if(a1.nombre==a2.nombre){ return 0; } } return 1; }
|
|
|
39
|
Programación / Programación C/C++ / Problema ejercicio de class - CONSULTA
|
en: 13 Diciembre 2018, 22:39 pm
|
Buenas, acá les dejo el código que hice ya comentado con mis dudas, a ver si me pueden dar un poco de iluminación que no estoy entendiendo PD: el método sumar, me pide que lo haga de este modo:
P_resuesta=P1.Sumar(P2)
[/b] #include <iostream> #include <cmath> using namespace std; class Polinomio{ int coeficiente[20]; int grado; public: Polinomio(int _grado=0){ grado=_grado; for(int i=0;i<grado;i++) { coeficiente[i]=0; } }; int Ver_coeficientes(int _i){ return coeficiente[_i]; } void Cambiar_coeficiente(int _c, int _pos); Polinomio Sumar_polinomios(Polinomio p2); int Evaluar(int _x); }; void Polinomio::Cambiar_coeficiente(int _c, int _pos){ coeficiente[_pos]=_c; } Polinomio Polinomio:: Sumar_polinomios(Polinomio p2){ for(int i=0;i<grado;i++) { coeficiente[i]+=p2.Ver_coeficientes(i); //Que deberia retornar? } } int Polinomio::Evaluar(int _x){ int aux=0; for(int i=0;i<grado--;i++) { aux+=coeficiente[i]*(pow(_x,(grado-i))); } aux+=coeficiente[grado]; return aux; } int main(int argc, char *argv[]) { int size; int coeficiente; cout<<"Ingrese el grado del Polinomio: "; cin>>size; Polinomio P(size); /*Carga del polinomio*/ cout<<"Ingrese los coeficientes, de mayor grado a menor "; cin>>coeficiente; int i=0; while(i<size){ P.Cambiar_coeficiente(coeficiente,i); cout<<"Ingrese los coeficientes, de mayor grado a menor "; cin>>coeficiente; ++i; } /*Veamos la carga inicial*/ for(int i=0;i<size;i++) { cout<<P.Ver_coeficientes(i)<<"x^"<<size-i; //Por que no veo el termino independiente? } cout<<endl; /*Evaluemos con un valor x el polinomio*/ int x; cout<<"Ingrese la incognita: "; cin>>x; cout<<P.Evaluar(x); //Obtengo basura, por que? cout<<endl; /*Probemos el metodo sumar Polinomio*/ /* nada*/
|
|
|
|
|
|
|