elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Optimizar el código de este ejercicio (arrays) C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Optimizar el código de este ejercicio (arrays) C++  (Leído 2,314 veces)
seryioo

Desconectado Desconectado

Mensajes: 83



Ver Perfil
Optimizar el código de este ejercicio (arrays) C++
« 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.

Código
  1. /*
  2. 11) Diseñar un programa en C++ para determinar la disponibilidad de una serie de personas
  3. para reunirse algún día de un cierto mes. Para esto, el programa deberá preguntar el
  4. número de días del mes (28, 29, 20 0 31) y el número de personas que deben reunirse; con
  5. estos datos, pedirá, una a una, a cada persona cuáles son los días (de 1 al número de días
  6. del mes) que tiene disponibles y con ayuda de un único array deberá presentar en
  7. pantalla los días disponibles en que coinciden todas las personas.*/
  8.  
  9. #include <iostream>
  10. using namespace std;
  11.  
  12. typedef int  Tarray [];
  13.  
  14. void eliminarDia (int noPuede,int  dias, Tarray ar);
  15.  
  16. void siPuede (Tarray ar);
  17.  
  18.  
  19. int main(){
  20.    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};
  21.    int dias=0, personas=0, noPuede=0;
  22.    do{
  23.        cout<<"Introduzca el numero de dias del mes: ";
  24.        cin>>dias;
  25.    }while(dias<28 or dias>31);
  26.  
  27.    if(dias==28){
  28.        ar[30]=0;
  29.        ar[29]=0;
  30.        ar[28]=0;
  31.    }
  32.    else if (dias==29){
  33.        ar[30]=0;
  34.        ar[29]=0;
  35.    }
  36.    else if(dias==30){
  37.        ar[30]=0;
  38.    }
  39.    else;
  40.    cout<<"Cuantas personas desea que se reunan?: ";
  41.    cin>>personas;
  42.  
  43.    for(unsigned contador=1; contador<=personas; contador++){
  44.        while(noPuede!=-1){ //Para pasar a la siguiente persona
  45.            cout<<"Persona "<<contador<<" ,dia que no puede reunirse: ";
  46.            cin>>noPuede;
  47.            eliminarDia(noPuede, dias, ar);
  48.        }
  49.        noPuede=0;
  50.    }
  51.    siPuede(ar);
  52.    return 0;
  53. }
  54.  
  55.  
  56. void eliminarDia (int noPuede,int  dias, Tarray ar){
  57.    if(noPuede!=-1){
  58.        for(unsigned i=0; i<dias; i++){
  59.            if(ar[i]==noPuede) ar[i]=0;
  60.        }
  61.    }
  62. }
  63.  
  64. void siPuede (Tarray ar){
  65.    cout<<"Todos pueden: "<<endl;
  66.    for(unsigned i=0; i<31; i++){
  67.        if(ar[i]!=0) cout<<ar[i]<<endl;
  68.    }
  69. }
  70.  
  71.  


En línea

exoesqueleto

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Optimizar el código de este ejercicio (arrays) C++
« Respuesta #1 en: 8 Agosto 2015, 08:37 am »

Saludos compadre, yo lo resolvi de otra manera echale un vistazo:

Código
  1.  
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. #define DIAS 31
  7.  
  8. int main() {
  9.  
  10.    int mes[DIAS] = {0}, numeroDias, cont= 0, numeroPersonas, centinela;
  11.    int reunion[DIAS] = {0};
  12.  
  13.    cout << "Introduzca cantidad de dias del mes (28, 29, 30 0 31): ";
  14.    cin >> numeroDias;
  15.  
  16.    for(int dias= 1; dias <= numeroDias; dias++)
  17.         mes[cont++] = dias;
  18.  
  19.    cout << "Introduzca cantidad de personas a reunirse: ";
  20.    cin >> numeroPersonas;// el dia debe cohincidir con el numero de personas
  21.  
  22.    for(int personas= 1; personas <= numeroPersonas; personas++){
  23.        cout << " Persona No " << personas  << endl;
  24.        centinela =0;
  25.        while(centinela != -1){
  26.            cout << "Introduzca los dias que tiene disponible (-1 para terminar): ";
  27.            cin >> centinela;
  28.             if(centinela != -1 ){
  29.                if(centinela <= numeroDias)
  30.                    reunion[ centinela - 1]++;
  31.                else
  32.                    cout << "Error! " << endl;
  33.            }//end_if
  34.        }//end_while
  35.        cout << endl;
  36.    }//for
  37.  
  38.    for(int cont =0; cont < DIAS; cont++){
  39.        if(reunion[cont] != numeroPersonas){
  40.            if(mes[cont] != 0)  
  41.                  cout << mes[cont] << "\t";
  42.              if(mes[cont] % 10 == 0)
  43.                  cout << endl;
  44.       }else{  
  45.             cout << "(" << mes[cont]<< ")\t";// los dias que coincidan se encierran entre parentesis
  46.        }//
  47.    }//end-for
  48.  
  49.    return 0;
  50. }//main
  51.  
  52.  


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Se puede optimizar este codigo ?
PHP
nobo 6 3,837 Último mensaje 5 Marzo 2012, 22:41 pm
por nobo
Se puede optimizar más este codigo?
Desarrollo Web
z3nth10n 2 2,873 Último mensaje 16 Abril 2013, 07:33 am
por z3nth10n
[?] Alguien que pueda optimizar y arreglar este codigo
Programación C/C++
MeCraniDOS 2 3,025 Último mensaje 3 Agosto 2013, 04:37 am
por MeCraniDOS
[C++] Ayuda para ejercicio de un calendario usando arrays.
Programación C/C++
nadales56 5 3,501 Último mensaje 12 Septiembre 2019, 20:18 pm
por nadales56
[AYUDA] [BATCH] ¿Se puede optimizar este código? (Suma)
Scripting
.:Xx4NG3LxX:. 0 1,893 Último mensaje 25 Febrero 2020, 20:08 pm
por .:Xx4NG3LxX:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines