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 - RiCo9297

#1
Programación C/C++ / Problema con cin.getline
16 Diciembre 2016, 20:26 PM
Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

const int numCitas = 10;
const int KNOMBRE = 40;
const int KDNI = 9;

typedef struct{
int dia, mes, anyo;
}Fecha;

typedef struct{
int h, m;
}Hora;

typedef struct{
char dni[KDNI];
char nombrePaciente[KNOMBRE];
}Paciente;

typedef struct{
Fecha fecha;
Hora hora;
char nombreFisio[KNOMBRE];
int tipoTratamiento;
Paciente paciente;
}Cita;

typedef struct{
Cita cita[numCitas];
int numCitas;
int cuantas = 1;
}Citas;

void leerFecha(Fecha &f){
do{
cout << "Dia: ";
cin >> f.dia;
}while(f.dia < 1 || f.dia > 31);
do{
cout << "Mes: ";
cin >> f.mes;
}while(f.mes < 1 || f.mes > 12);
do{
cout << "Año: ";
cin >> f.anyo;
}while(f.anyo < 0);
cin.get();
}

void imprimirFecha(Fecha f){
cout << "Dia: " << f.dia << endl;
cout << "Mes: " << f.mes << endl;
cout << "Año: " << f.anyo << endl;
}

void leerHora(Hora &h){
do{
cout << "Hora: ";
cin >> h.h;
}while(h.h < 0 || h.h > 23);
do{
cout << "Minuto: ";
cin >> h.m;
}while(h.m < 0 || h.m > 59);
cin.get();
}

void imprimirHora(Hora h){
cout << "Hora: " << h.h << endl;
cout << "Minuto: " << h.m << endl;
}

void leerPaciente(Paciente &p){
cout << "DNI: ";
cin.getline(p.dni, KDNI);
cin.get();
cout << "Nombre: " ;
cin.getline(p.nombrePaciente, KNOMBRE);
cin.get();
}

void imprimirPaciente(Paciente p){
cout << "DNI: " << p.dni << endl;
cout << "Nombre: " << p.nombrePaciente << endl;
}

void leerCita(Cita &c){
cout << "**** SOLICITUD DE CITA ****" << endl;
cout << "Introduzca fecha: " << endl;
leerFecha(c.fecha);
cout << "Introduzca la hora: " << endl;
leerHora(c.hora);
cout << "Nombre del fisioterapeuta: ";
cin.getline(c.nombreFisio, KNOMBRE);
cout << "Tipo de tratamiento (1.Masaje, 2.Lesion, 3.Rehabilitacion): ";
cin >> c.tipoTratamiento;
cout << "Introduzca los datos del paciente: " << endl;
leerPaciente(c.paciente);
}

void imprimirCita(Cita c){
cout << "***** CITA *******" << endl;
cout << "FECHA: " << endl;
imprimirFecha(c.fecha);
cout << "HORA DE LA CITA: " << endl;
imprimirHora(c.hora);
cout << "Nombre del fisioterapeuta: " << c.nombreFisio << endl;
cout << "Tipo de tratatimiento: ";
switch(c.tipoTratamiento){
case 1:
cout << "Masaje " << endl;
break;
case 2:
cout << "Lesion" << endl;
break;
case 3:
cout << "Rehabilitacion" << endl;
break;
}
}

void pedirCitas(Citas &cit){
if(cit.cuantas < cit.numCitas){
leerCita(cit.cita[cit.cuantas]);
cit.cuantas++;
}
else{
cout << "No se admiten mas citas" << endl;
}
}

void imprimirCitas(Citas cit){
int i;
for(i = 1; i <= cit.cuantas; i++){
imprimirCita(cit.cita[i]);
}
cout << endl;
}

int main(){
int opcion;
Citas c;
do{
cout << "********** SERVICIO DE FISIOTERAPIA ************** " << endl;
cout << "Seleccione una opcion del menu: " << endl;
cout << "1. Pedir una cita " << endl;
cout << "2. Anular una cita " << endl;
cout << "3. Mostrar listado de citas " << endl;
cout << "4. Mostrar facturacion de un fisioterapeuta " << endl;
cout << "5. Salir " << endl;
cout << "Opcion: " << endl;
cin >> opcion;
switch(opcion){
case 1:
pedirCitas(c);
break;
case 2:
break;
case 3:
imprimirCitas(c);
break;
case 4:
break;
case 5:
break;
default:
cout << "OPCION INCORRECTA " << endl;
}
}while(opcion != 5);
}


En el modulo leerPaciente hay puesto dos cin.getline, el primero lee un dni que es una cadena de caracteres de tipo paciente(la estructura) y otro que lee el nombre del paciente que es otra cadena de caracteres del mismo tipo, el problema esta en que al introducir el nombre el programa me entra en un bucle, como puedo solucionarlo GRACIASSSS  :-* :-* :-* :-* :-*
#2
Programación C/C++ / Ayuda!! NUMEROS PRIMOS
4 Octubre 2016, 17:34 PM
Hola buenas me gustaría que alguien me mandase una explicación de como tengo que plantear el código, para que al introducir un numero por teclado me diga si es un número primo o no lo es, llevo tiempo dándole vueltas y no saco nada en claro por favor ayudadmeeeeeeee  :-( :-( :-( :-( :-( :-( :-( :-( :-(
#3
Hola buenas me gustaría saber si alguien tiene unos apuntes o alguna manera de explicar cuando se usa el paso por valor o el paso por referencia ya que no lo comprendo demasiado bien, lo pido para c++ utilizando el & y no el *, muchas gracias.
#4
Hola buenas me gustaría que alguien me explicase, por que en el tercer modulo comprobarResultado, el número de aciertos no aumenta en el recuento final y el motivo de por que los números aleatorios no son aleatorios realmente por que siempre se me repiten los mismo números.

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
using namespace std;


char aQueJugar(char &opcion){
cout << "¿Qué quieres practicar: sumas (+), restas (-) o " <<
" multiplicaciones(*)?: ";
cin >> opcion;
}


int generarOperacion(char opcion, bool acertada, int numpregunta, int &resultado, int &total){

int valor1 = rand() % 20 + 10;
int valor2 = rand() % 20 + 10;
numpregunta = 1;
int numaciertos = 0;
int numfallos = 0;
acertada = true;

aQueJugar(opcion);

do{
if(opcion == '+'){
cout << "Pregunta" << numpregunta << ":" << endl;
cout << " " << valor1 << endl;
cout << "+" << valor2 << endl;
cout << "------" << endl;
total = valor1 + valor2;
cin >> resultado;
if(resultado == total){
acertada = true;
cout << "Muy bien! Eres un genio!" << endl;
}
else{
acertada = false;
cout << "Oh! Esta no la has acertado" << endl;
}
}
if(opcion == '-'){
cout << "Pregunta" << numpregunta << ":" << endl;
cout << " " << valor1 << endl;
cout << "-" << valor2 << endl;
cout << "------" << endl;
total = valor1 - valor2;
cin >> resultado;
if(resultado == total){
acertada = true;
cout << "Muy bien! Eres un genio!" << endl;
}
else{
acertada = false;
cout << "Oh! Esta no la has acertado" << endl;
}
}
if(opcion == '*'){
cout << "Pregunta" << numpregunta << ":" << endl;
cout << " " <<valor1 << endl;
cout << "*" << valor2 << endl;
cout << "-------" << endl;
total = valor1 * valor2;
cin >> resultado;
if(resultado == total){
acertada = true;
cout << "Muy bien! Eres un genio!" << endl;
}
else{
acertada = false;
cout << "oh! Esta no la has acertado" << endl;
}
}
numpregunta++;
}while(numpregunta <= 5);


}

int comprobarResultado(bool acertada){
acertada = true;
int resultado = 0;
char opcion;
int numpregunta = 1;
int i = 0;
char otravez;
int total = 0;
generarOperacion(opcion, acertada, numpregunta, resultado, total);
cout << "** HAS TERMINADP! **" << endl;
do{
if(resultado == total){
acertada == true;
i++;
}
numpregunta++;
}while(numpregunta <= 5);
cout << "Has acertado " << i << " de " << numpregunta - 1 << " preguntas";
}

int main(){
char sino;
char opcion;
bool acertada;
char otravez;
cout << "***************************************" << endl;
cout << "***** BIENVENIDO A LA GINKAMÁTICA *****" << endl;
cout << "***************************************" << endl;
cout << endl;
cout << "¿Quieres jugar conmigo? (s,n): ";
cin >> sino;
if(sino == 's'){
comprobarResultado(acertada);
}
else{
if(sino == 'n'){
cout << "Adios";
}
}
}
#5
Programación C/C++ / Ayuda con ejercicio
14 Junio 2016, 18:26 PM
Hola buenas estoy haciendo un ejercicio de pirámides con for, el ejercicio tiene que resultar algo tal que asi
n: 4
1
21
321
4321

y a mi me sale esto
n: 4
4321
321
21
1

Me gustaría que alguien me orientase un poco hasta la solución aquí dejo el código
PD: Esta realizado en C++
int main(){
   int n, i, j;
   cout << "n: ";
   cin >> n;
   for(i = n; i > 0; i--){
      for(j = i; j > 0; j--){
         cout << j;
      }
      cout << endl;
   }
}
#6
Programación C/C++ / Ejercicios de C++
31 Mayo 2016, 11:55 AM
Hola buenas me gustaria saber si alguien tiene una coleccion de ejercicios que pudiera pasar que cubra desde el principio hasta la orientada a objetos pasando por, programacion modular simple, arrays, registros, ficheros, etc. Me seria de gran ayuda para poder asentar todos los conocimientos que voy teniendo.