Duvida em Linguagem C. Erro desconhecido.

Bem, eu tenho o seguinte bocado de código numa função:
Código:
switch(tipo_quarto){                    
                   case 1: for(i=0; i<ANDARES; i++){
                             for(j=0; j<QUARTOS; j++){
                                      if(tipo_quarto == informacao[i].quarto[j].tipo_quarto && informacao[i].quarto[j].ocupacao==0 && *indiv>0){
                                      info_check_in_hospede(informacao, i, j);
                                      informacao[i].quarto[j].ocupacao=1;
                                      *indiv=*indiv-1;
                                       sucesso=1;
                                      break;
                                      }
                                      }
                                      }
                             break;
                    }
Eu quero utilizar o primeiro "i" e "j" em que a condição seja verdade, mas o que me acontece é que no caso de a condição se verificar em dois "i" diferentes, as instruções são repetidas. Uso o break, mas parece que só pára o ciclo for interno("j"). E se utilizo break antes de fechar o ciclo for externo ("i") só percorre os "j" do primeiro "i".
Alguém me pode ajudar?
 
Não sei se percebi bem a tua dúvida, mas parece-me que o que queres é o seguinte:
Código:
switch(tipo_quarto){                    
    case 1:
        [B][COLOR=#00ff00]int sucesso=0;[/COLOR][/B]
        for(i=0; [COLOR=#00ff00][B](i<ANDARES) && (sucesso==0)[/B][/COLOR]; i++){
            for(j=0; j<QUARTOS; j++){
                if(tipo_quarto == informacao[i].quarto[j].tipo_quarto && informacao[i].quarto[j].ocupacao==0 && *indiv>0){
                    info_check_in_hospede(informacao, i, j);
                    informacao[i].quarto[j].ocupacao=1;
                    *indiv=*indiv-1;
                    sucesso=1;
                    break;
                }
            }
        }
}
 
Back
Topo