DoisReal 0 Denunciar post Postado Setembro 6, 2010 Olá Pessoal, Fiz um código com IF e funcionou perfeitamente. Peguei o mesmo codigo e substituí o IF por SWITCH e deu erro. Vou colar o código pra ver se vcs conseguem me ajudar. # include <iostream.h> # include <stdio.h> # include <stdlib.h> # include <time.h> # include <conio.h> # include <math.h> # include <iostream> # include <windows.h> # define MAX_LIN 3 # define MAX_COL 2 float conversao(float); //protótipo da função float converter(int, int); //protótipo da função void vetor(int vet[MAX_LIN][MAX_COL]); // protótipo da função int main() { char opcao; do { system("cls"); cout << "-----Menu-----"; cout << "\n1 - Exercicio1"; cout << "\n2 - Exercicio2"; cout << "\n3 - Exercicio3"; cout << "\nS - Sair"; cout << "\n\nDig. a opcao desejada: "; cin >> opcao; switch (opcao) { case '1': float x; cout << "Digite em graus celsio: "; cin >> x; cout << "A temperatura em Fahrenheit eh = " << conversao(x); getch(); break; case '2': int recebe1; float recebe2; int a = 10, b = 3; recebe1 = a / b; recebe2 = converter(a, B); cout << "O valor de recebe1 = " << recebe1; cout << "\nO valor de recebe2 = " << recebe2; getch(); break; case '3': int i, j; int vet[MAX_LIN][MAX_COL]; for (i=0;i<MAX_LIN;i++) for (j=0;j<MAX_COL;j++) { cout << "digite o valor vet[" << i << "],[" << j << "]: "; cin >> vet[i][j]; } vetor(vet); getch(); break; default: cout << "Opcao invalida!"; } } while (opcao != 's'); cout << "Voce decidiu sair!"; getch(); } float conversao(float c) { return (9*c+160)/5; } float converter(int x, int y) { return (float) x/y; } void vetor(int vet[MAX_LIN][MAX_COL]) { for (int i=0;i<MAX_LIN;i++) for (int j=0;j<MAX_COL;j++) { cout << "\nO valor de vet[" << i << "," << j << "]: " << vet[i][j]; } } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Setembro 8, 2010 O que não funciona? # include <iostream> # include <cstdio> # define MAX_LIN 3 # define MAX_COL 2 float conversao(float); //protótipo da função float converter(int, int); //protótipo da função void vetor(int vet[MAX_LIN][MAX_COL]); // protótipo da função using namespace std; int main() { //Declaracoes float x; char opcao; int recebe1; float recebe2; int a = 10, b = 3; int i, j; int vet[MAX_LIN][MAX_COL]; do { cout << "-----Menu-----"; cout << "\n1 - Exercicio1"; cout << "\n2 - Exercicio2"; cout << "\n3 - Exercicio3"; cout << "\nS - Sair"; cout << "\n\nDig. a opcao desejada: "; cin >> opcao; switch (opcao) { case '1': cout << "Digite em graus celsio: "; cin >> x; cout << "A temperatura em Fahrenheit eh = " << conversao(x) << endl; break; case '2': recebe1 = a / b; recebe2 = converter(a, B); cout << "O valor de recebe1 = " << recebe1; cout << "\nO valor de recebe2 = " << recebe2 << endl; break; case '3': for (i=0;i<MAX_LIN;i++) for (j=0;j<MAX_COL;j++) { cout << "digite o valor vet[" << i << "],[" << j << "]: "; cin >> vet[i][j]; } vetor(vet); break; default: cout << "Opcao invalida!" << endl; } } while (opcao != 's'); cout << "Voce decidiu sair!" << endl; return 0; } float conversao(float c) { return (9*c+160)/5; } float converter(int x, int y) { return (float) x/y; } void vetor(int vet[MAX_LIN][MAX_COL]) { for (int i=0;i<MAX_LIN;i++) for (int j=0;j<MAX_COL;j++) { cout << "\nO valor de vet[" << i << "," << j << "]: " << vet[i][j]; cout << endl; } } Compartilhar este post Link para o post Compartilhar em outros sites
DoisReal 0 Denunciar post Postado Setembro 8, 2010 Não chega nem a compilar. Sendo que com o IF compilou e funcionou corretamente. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Setembro 8, 2010 Qual compilador? O Código que te enviei compila tranquilo pelo Code::Blocks []s Compartilhar este post Link para o post Compartilhar em outros sites
brunocampos_ 3 Denunciar post Postado Setembro 8, 2010 Alguns compiladores não aceitam declaração de variáveis em blocos case diretamente. Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Setembro 9, 2010 Qual compilador? O Código que te enviei compila tranquilo pelo Code::Blocks []s Só pra constar, o Code Blocks é a IDE. Se você usa Windows, ele provavelmente está configurado para usar o MinGW (Minimalist GNU fow Windows). Compartilhar este post Link para o post Compartilhar em outros sites
VictorCacciari 42 Denunciar post Postado Setembro 9, 2010 Alguns compiladores não aceitam declaração de variáveis em blocos case diretamente. A especificação ANSI C só permite a declaração de uma variável dentro de um escopo. Os "cases" de um "switch" não são escopos, é preciso delimitá-los com chavess ('{}') para que sejam. Compartilhar este post Link para o post Compartilhar em outros sites
DoisReal 0 Denunciar post Postado Setembro 9, 2010 Olá Pessoal, Agora entendi, o case nao aceite declaração de variaveis dentro dele e o IF aceita. Agora rodou com o modelo do quitZAUMMM. Vlw Obrigado. Obs: Eu utilizo o Dev-C++ Podem encerrar o tópico. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Setembro 9, 2010 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites