Título: Optimizar el código de este ejercicio (arrays) C++
Publicado por: seryioo en 7 Agosto 2015, 23:57 pm
Buenas, estoy haciendo ejercicios de array. He terminado uno y funciona correctamente pero creo que he hecho bastantes chapuzas en el código y me gustaría que lo vierais para pulirlo un poco. Gracias. /* 11) Diseñar un programa en C++ para determinar la disponibilidad de una serie de personas para reunirse algún día de un cierto mes. Para esto, el programa deberá preguntar el número de días del mes (28, 29, 20 0 31) y el número de personas que deben reunirse; con estos datos, pedirá, una a una, a cada persona cuáles son los días (de 1 al número de días del mes) que tiene disponibles y con ayuda de un único array deberá presentar en pantalla los días disponibles en que coinciden todas las personas.*/ #include <iostream> using namespace std; typedef int Tarray []; void eliminarDia (int noPuede,int dias, Tarray ar); void siPuede (Tarray ar); int main(){ Tarray ar={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31}; int dias=0, personas=0, noPuede=0; do{ cout<<"Introduzca el numero de dias del mes: "; cin>>dias; }while(dias<28 or dias>31); if(dias==28){ ar[30]=0; ar[29]=0; ar[28]=0; } else if (dias==29){ ar[30]=0; ar[29]=0; } else if(dias==30){ ar[30]=0; } else; cout<<"Cuantas personas desea que se reunan?: "; cin>>personas; for(unsigned contador=1; contador<=personas; contador++){ while(noPuede!=-1){ //Para pasar a la siguiente persona cout<<"Persona "<<contador<<" ,dia que no puede reunirse: "; cin>>noPuede; eliminarDia(noPuede, dias, ar); } noPuede=0; } siPuede(ar); return 0; } void eliminarDia (int noPuede,int dias, Tarray ar){ if(noPuede!=-1){ for(unsigned i=0; i<dias; i++){ if(ar[i]==noPuede) ar[i]=0; } } } void siPuede (Tarray ar){ cout<<"Todos pueden: "<<endl; for(unsigned i=0; i<31; i++){ if(ar[i]!=0) cout<<ar[i]<<endl; } }
Título: Re: Optimizar el código de este ejercicio (arrays) C++
Publicado por: exoesqueleto en 8 Agosto 2015, 08:37 am
Saludos compadre, yo lo resolvi de otra manera echale un vistazo: #include <iostream> using namespace std; #define DIAS 31 int main() { int mes[DIAS] = {0}, numeroDias, cont= 0, numeroPersonas, centinela; int reunion[DIAS] = {0}; cout << "Introduzca cantidad de dias del mes (28, 29, 30 0 31): "; cin >> numeroDias; for(int dias= 1; dias <= numeroDias; dias++) mes[cont++] = dias; cout << "Introduzca cantidad de personas a reunirse: "; cin >> numeroPersonas;// el dia debe cohincidir con el numero de personas for(int personas= 1; personas <= numeroPersonas; personas++){ cout << " Persona No " << personas << endl; centinela =0; while(centinela != -1){ cout << "Introduzca los dias que tiene disponible (-1 para terminar): "; cin >> centinela; if(centinela != -1 ){ if(centinela <= numeroDias) reunion[ centinela - 1]++; else cout << "Error! " << endl; }//end_if }//end_while cout << endl; }//for for(int cont =0; cont < DIAS; cont++){ if(reunion[cont] != numeroPersonas){ if(mes[cont] != 0) cout << mes[cont] << "\t"; if(mes[cont] % 10 == 0) cout << endl; }else{ cout << "(" << mes[cont]<< ")\t";// los dias que coincidan se encierran entre parentesis }// }//end-for return 0; }//main
|