Programação Progressiva

Fórum para dúvidas dos sites: Programação Progressiva, Java Progressivo, C Progressivo


Você não está conectado. Conecte-se ou registre-se

erro !! no case 2:

Ver o tópico anterior Ver o tópico seguinte Ir em baixo  Mensagem [Página 1 de 1]

1 erro !! no case 2: em Dom Ago 09, 2015 9:46 pm

ola gente quando executo o meu codigo e seleciono o CASE 2: esta aparecendo um numero 2 a mais o codigo, tentei achar o erro mas nao consegui kkkk se puder ajudar agradeco;

Código:
#include <iostream>
#include <stdlib.h>
#define MAX 5

using namespace std;


int numero[MAX];
int opc;
main(){
        for (int i = 0; i< MAX; i++){
            cout << "Informe " << i+1 << " numeros:\t" ;
            cin >> numero[i];
            system("cls");
            }

    do{
        cout << "Informe uma opcao:" << endl;
        cout << "1- para mostrar numeros em ordem direta:" << endl;
        cout << "2- para mostrar numeros em ordem inversa:" << endl;
        cout << "0- para sair" << endl;

        cin >> opc;

        switch(opc){

            case 1 :
                for (int i = 0; i< MAX; i++){
                cout << "numero direto:\t" << numero[i]  ;
                cout << "\n";
                }
                break;
            case 2 :
                for (int i = MAX; i >= 0; i--){
                cout << "numero inverttido\t" << numero[i]  ;
                cout << "\n";
                }
                break;
            case 0:
                cout << "saindo do sistema." << endl;
                break;
            default:
                cout << "Voce digitou uma opc. ivalida\n";

        }
    }while(opc !=0);



}

outra coisa como deixar esse codigo mais organizado ::?? obrigado

Ver perfil do usuário

2 Re: erro !! no case 2: em Dom Ago 09, 2015 11:03 pm

neogalax, não cheguei a observar direito o cod, mas deixa eu ver se entendi.
o maximo desse vetor ai é um vetor 5 né? tipo o usuario informa um numero de 5 digitos e ele poderá ver a opção normal ou inversa.


case 2 :
              for (int i = MAX; i >= 0; i--){

ao inves de digitar i>=0 na linha do case 2 , experimente i>0 , vamos vê se da certo ai,ja que ta aparecendo coisa a mais.

Ver perfil do usuário

3 Re: erro !! no case 2: em Seg Ago 10, 2015 2:25 am

Então, neogalax, eu testei aqui e é quase isso que a Taina tavares falou, só que na parte
de inicialização do for do case 2:
Código:
  // aqui - assim funciona
for (int i = (MAX - 1); i >= 0; i--)

Você escreveu pra guardar os números da posição 0 até a posição 4 no vetor "numero":
Código:
    // de 0  // até 4
for (int i = 0; i< MAX; i++){
    cout << "Informe " << i+1 << " numeros:\t" ;
    cin >> numero[i];
    system("cls");
}


Mas na hora de ler e exibi-los, você começou na posição 5 (fora do vetor) e foi até a posição 0:
Código:
 // Começou em 5 // foi até 0
for (int i = MAX; i >= 0; i--){
    cout << "numero inverttido\t" << numero[i]  ;
    cout << "\n";
}

É o famoso "erro por 1".


Já quanto a organização do código, você pode divídi-lo em funções...
Por exemplo:
Código:
#include <iostream>
#include <stdlib.h>

#define MAX 5

using namespace std;

void ReceberNumeros();
void EscolherOpcao();
void VerificarOpcao();

int numero[MAX];
int opc;

int main()
{
    ReceberNumeros();

    do
    {
        EscolherOpcao();

        VerificarOpcao();
    }
    while(opc != 0);

    return 0;
}

void ReceberNumeros()
{
    for (int i = 0; i < MAX; i++)
    {
        cout << "Informe " << i+1 << " numeros:\t" ;
        cin >> numero[i];
        system("cls");
    }
}

void EscolherOpcao()
{
    cout << "Informe uma opcao:" << endl;
    cout << "1- para mostrar numeros em ordem direta:" << endl;
    cout << "2- para mostrar numeros em ordem inversa:" << endl;
    cout << "0- para sair" << endl;

    cin >> opc;
}

void VerificarOpcao()
{
    switch(opc)
    {
        case 1 :
            for (int i = 0; i < MAX; i++)
                cout << "numero direto:\t" << numero[i] << endl;

            break;

        case 2 :
            for (int i = (MAX - 1); i >= 0; i--)
                cout << "numero inverttido\t" << numero[i] << endl;

            break;

        case 0:
            cout << "saindo do sistema." << endl;
            break;

        default:
            cout << "Voce digitou uma opc. ivalida\n";
    }
}

É isso. Very Happy

Ver perfil do usuário

4 Re: erro !! no case 2: em Seg Ago 10, 2015 1:51 pm

kkk, nao acredito o (MAX -1) era o que faltava e olha que eu procurei o erro em. obrigado novamente

Ver perfil do usuário

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo  Mensagem [Página 1 de 1]

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum