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

Dificuldade em desenvolvimento de função

Ir em baixo  Mensagem [Página 1 de 1]

1 Dificuldade em desenvolvimento de função em Seg Jul 28, 2014 10:55 pm

Prezados(as)

Solicito auxílio no desenvolvimento de uma função onde, quando digitado seu respectivo número de alternativa, exibe dicas para solucionar "Puzzle" segue o código até o momento:

Ordem da atividade:

Teste de Einstein:
- Há 5 estabelecimentos de diferentes cores;
- Em cada estabelecimento há uma pessoa de uma diferente nacionalidade;
- Esses 5 proprietários vendem diferentes bebidas, diferentes tipos de cigarros e têm um certo animal de estimação;
- Nenhum deles têm o mesmo animal, o mesmo cigarro ou a mesma bebida.

O programa deverá disponibilizar as seguintes dicas para o usuário:

- O Norueguês vive no primeiro estabelecimento;
- O Inglês vive na casa Vermelha;
- O Sueco tem Cachorros como animais de estimação;
- O Dinamarquês vende Chá;
- A casa Verde fica do lado esquerdo da casa Branca;
- O homem que vive na casa Verde vende Café;
- O homem que vende Pall Mall cria Pássaros;
- O homem que vive na casa Amarela vende Dunhill;
- O homem que vive na casa do meio vende Leite;
- O homem que vende Blends vive ao lado do que tem Gatos;
- O homem que cria Cavalos vive ao lado do que vende Dunhill;
- O homem que vende BlueMaster vende Cerveja;
- O Alemão vende Prince;
- O Norueguês vive ao lado da casa Azul;
- O homem que vende Blends é vizinho do que vende Água.

A ideia é disponibilizar para o usuário uma matriz 5x5 de forma que a mesma seja atualizada onde cada campo seja preenchido de acordo com as informações passadas pelo usuário (linha, coluna, opção).


#include <stdio.h>
#include <stdlib.h>
#define MAX 5

int mostra_tabela (void);
void mostra_dicas (void);
int mostra_opcoes (void);
void exibe_linhas (int linha);

int matriz[MAX][MAX];

int main(void) {

int linha, coluna, opcao;

for(linha=0; linha<MAX; linha++) {
for(coluna=0; coluna<MAX; coluna++) {
matriz[linha][coluna]=-1;
}
}

puts("\n-- Teste de Einstein --");
puts("\n--       MENU        --");

puts("\n1 - Mostra Tabela");
puts("\n2 - Mostra Dicas");
puts("\n3 - Sair");

fflush(stdout);
scanf("%d", &opcao);

while (opcao != 3) {
switch(opcao) {
case 1:
system("cls");
mostra_tabela();
break;
case 2:
system("cls");
mostra_dicas();
break;
}
}

return EXIT_SUCCESS;
}

int mostra_tabela(void) {
int linha, coluna, opcao;

printf("\n          \tCasa 0 \t Casa 1\t Casa 2\t Casa 3\t Casa 4\n\n");
for(linha=0; linha<MAX; linha++) {
exibe_linhas(linha);
for(coluna=0; coluna<MAX; coluna++) {
printf("%d \t", matriz[linha][coluna]);
}
puts("\n");
}

mostra_opcoes();

puts("\n\n");
puts("Entre com a linha:");
fflush(stdout);
scanf("%d", &linha);
puts("Entre com a coluna:");
fflush(stdout);
scanf("%d", &coluna);
puts("Entre com a opcao:");
fflush(stdout);
scanf("%d", &opcao);

matriz[linha][coluna]=opcao;
return 0;
}



void mostra_dicas(void) {

}

void exibe_linhas(int linha) {
if (linha == 0) {
printf("%d-Cor    \t", linha);
}
else if (linha == 1) {
printf("%d-Nacion. \t", linha);
}
else if (linha == 2) {
printf("%d-Bebida \t", linha);
}
else if (linha == 3) {
printf("%d-Cigarro \t", linha);
}
else {
printf("%d-Animal \t", linha);
}
}

int mostra_opcoes(void) {
printf("\nCor:    \t10-Amarelo\t11-Azul\t12-Branca\t13-Verde\t14-Vermelho");
printf("\nNacion.:\t20-Alemao\t21-Dinamarques\t22-Ingles\t23-Noruegues\t24-Sueco");
printf("\nBebida: \t30-Agua\t31-Cafe\t32-Cerveja\t33-Cha\t34-Leite");
printf("\nCigarro:\t40-Blends\t41-Bluemaster\t42-Dunhill\t43-Pall Mall\t44-Prince");
printf("\nAnimal: \t50-Cachorro\t51-Gato\t52-Passaro\t53-Cavalo\t54-peixe");
return 0;
}

Por volta da linha 79, onde há um void para "dicas", nesta específica parte encontrei dificuldade para desenvolver o algoritmo, como podem ver, é bem simples o código, apenas nesta parte encontrei dificuldade. Se digitado "2" deverá aparecer as dicas, conforme for preenchida a matriz, as dicas deverão ser eliminadas, esta é minha maior dificuldade até o momento, pois sou iniciante nesta área.

Agradeço a atenção.

PS: Utilizo a versão mais recente do C++

Ver perfil do usuário

2 Re: Dificuldade em desenvolvimento de função em Qui Jul 31, 2014 12:07 am

Ficou da seguinte maneira, após muito quebrar a cabeça como iniciante, mas ainda acho que posso melhorar.

#include <stdio.h>
#include <stdlib.h>

#define MAX 5

int mostra_tabela (void);
void mostra_dicas (void);
int mostra_opcoes (void);
void exibe_linhas (int linha);

int matriz[MAX][MAX], flag=0;

int main(void) {

int linha, coluna, opcao;

for(linha=0; linha<MAX; linha++) {
for(coluna=0; coluna<MAX; coluna++) {
matriz[linha][coluna]=-1;
}
}

puts("\n-- Teste de Einstein --");
puts("\n-- MENU --");

puts("\n1 - Mostra Tabela");
puts("\n2 - Mostra Dicas");
puts("\n3 - Sair");

fflush(stdout);
scanf("%d", &opcao);

while (opcao != 3) {
switch(opcao) {
case 1:
system("cls");
mostra_tabela();
break;
case 2:
system("cls");
mostra_dicas();
break;
}
}
return EXIT_SUCCESS;
}

int mostra_tabela(void) {
int linha, coluna, opcao;

printf("\n \tCasa 0 \t Casa 1\t Casa 2\t Casa 3\t Casa 4\n\n");
for(linha=0; linha<MAX; linha++) {
exibe_linhas(linha);
for(coluna=0; coluna<MAX; coluna++) {
printf("%d \t", matriz[linha][coluna]);
}
puts("\n");
}

mostra_opcoes();

puts("\n\n");
puts("Entre com a linha:");
fflush(stdout);
scanf("%d", &linha);
puts("Entre com a coluna:");
fflush(stdout);
scanf("%d", &coluna);
puts("Entre com a opcao:");
fflush(stdout);
scanf("%d", &opcao);

matriz[linha][coluna]=opcao;
return 0;
}

void mostra_dicas(void) {

int linha, coluna, opcao;

printf("\tDICAS");
printf("\n\n[] O Noruegues vive na primeira casa.\n[] O Ingles vive na casa Vermelha.\n[] O Sueco tem Cachorros como animais de estimacao.\n[] O Dinamarques bebe Cha.\n[] A casa Verde fica do lado esquerdo da casa Branca.\n[] O homem que vive na casa Verde bebe Cafe.\n[] O homem que fuma Pall Mall cria Passaros.\n[] O homem que vive na casa Amarela fuma Dunhill.\n[] O homem que vive na casa do meio bebe Leite.\n[] O homem que fuma Blends vive ao lado do que tem Gatos.\n[] O homem que cria Cavalos vive ao lado do que fuma Dunhill.\n[] O homem que fuma BlueMaster bebe Cerveja.\n[] O Alemao fuma Prince.\n[] O Noruegues vive ao lado da casa Azul.\n[] O homem que fuma Blends e vizinho do que bebe ?gua.");

if (linha==1 && coluna==0 && opcao==23) {
printf("[x] O Noruegu?s vive na primeira casa.");
flag=flag+1;
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[0][coluna]==14 && matriz[1][coluna]==22) {
printf("[x] O Ingl?s vive na casa Vermelha.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[1][coluna]==24 && matriz[1][coluna]==50) {
printf("[x] O Sueco tem Cachorros como animais de estimacao.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[1][coluna]==22 && matriz[2][coluna]==33) {
printf("[x] O Dinamarqu?s bebe Cha.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[0][coluna]==12 && matriz[0][coluna-1]==13) {
printf("[x] A casa Verde fica do lado esquerdo da casa Branca.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[0][coluna]==13 && matriz[2][coluna]==31) {
printf("[x] O homem que vive na casa Verde bebe Cafe.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[0][coluna]==13 && matriz[2][coluna]==31) {
printf("[x] O homem que vive na casa Verde bebe Cafe.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[3][coluna]==43 && matriz[4][coluna]==52) {
printf("[x] O homem que fuma Pall Mall cria Passaros");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[0][coluna]==10 && matriz[3][coluna]==42) {
printf("[x] O homem que vive na casa Amarela fuma Dunhill.");
flag=flag+1;
}
}

if (matriz[2][2]==34) {
printf("[x] O homem que vive na casa do meio bebe Leite.");
flag=flag+1;
}


for (coluna=0; coluna<MAX; coluna++) {
if (matriz[3][coluna]==40 && matriz[4][coluna]==51) {
printf("[x] O homem que fuma Blends vive ao lado do que tem Gatos.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[4][coluna]==53 && matriz[3][coluna]==42) {
printf("[x] O homem que cria Cavalos vive ao lado do que fuma Dunhill.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[3][coluna]==41 && matriz[2][coluna]==32) {
printf("[x] O homem que fuma BlueMaster bebe Cerveja");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[1][coluna]==20 && matriz[3][coluna]==44) {
printf("[x] O Alem?o fuma Prince.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[1][coluna]==23 && matriz[0][coluna]==11) {
printf("[x] O Noruegues vive ao lado da casa Azul.");
flag=flag+1;
}
}

for (coluna=0; coluna<MAX; coluna++) {
if (matriz[3][coluna]==40 && matriz[2][coluna]==30) {
printf("[x] O homem que fuma Blends e vizinho do que bebe Agua");
flag=flag+1;
}
}

if (flag==15) {
printf("PARABENS COMPLETOU O DESAFIO!");
}
}


void exibe_linhas(int linha) {
if (linha == 0) {
printf("%d-Cor \t", linha);
}
else if (linha == 1) {
printf("%d-Nacion. \t", linha);
}
else if (linha == 2) {
printf("%d-Bebida \t", linha);
}
else if (linha == 3) {
printf("%d-Cigarro \t", linha);
}
else {
printf("%d-Animal \t", linha);
}
}

int mostra_opcoes(void) {
printf("\nCor: \t10-Amarelo\t11-Azul\t12-Branca\t13-Verde\t14-Vermelho");
printf("\nNacion.:\t20-Alemao\t21-Dinamarques\t22-Ingles\t23-Noruegues\t24-Sueco");
printf("\nBebida: \t30-Agua\t31-Cafe\t32-Cerveja\t33-Cha\t34-Leite");
printf("\nCigarro:\t40-Blends\t41-Bluemaster\t42-Dunhill\t43-Pall Mall\t44-Prince");
printf("\nAnimal: \t50-Cachorro\t51-Gato\t52-Passaro\t53-Cavalo\t54-peixe");
return 0;
}

Ver perfil do usuário

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