Forum Pplware

Versão Completa: Ajuda em exercício de Programação em C
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Boa noite pessoal, sou uma estudante de Matemáticas Aplicadas que tem um cadeira de Programação. Nunca tinha tido essa cadeira e não percebo nada ou muito pouco.
Tenho um trabalho para programar um jogo e pedia ajuda para aquilo que fiz, para que me indicassem os erros, o que pode estar mal pois o programa não corre ou não compila.
O que é pedido é
Alínea A) Uma carta

Faça um programa que pede ao utilizador um número entre 0 e 39, e mostra a carta correspondente. O dígito menos significativo corresponde o número (0 ao 2, 1 ao 3, e assim sucessivamente até que o dígito 9 corresponde ao A), sendo a sequência completa a seguinte: 23456DVR7A. O dígito mais significativo corresponde ao naipe (0 a  (copas), 1 a  (ouros), 2 a  (paus) e 3 a  (espadas)). Utilizar os caracteres com o código ASCII 3 a 6 para representar o naipe (utilizar fonte Lucida Console).

Execução de exemplo:
Código:
C:\>111111A
Introduza carta (0-39): 2
Carta introduzida: 4
C:\>111111A
Introduza carta (0-39): 10
Carta introduzida: 2
C:\>111111A
Introduza carta (0-39): 29
Carta introduzida: A
C:\>111111A
Introduza carta (0-39): 37
Carta introduzida: R
C:\>111111A
Introduza carta (0-39): 40
Carta introduzida:

Eis o que fiz, com base no manual de programação fornecido pelo professor.
Código:
# include <stdio.h>
int main()
{
    int n;
    int selected[40];
    printf("Introduza carta (0-39): \n:");
    scanf("%d", & n);
    if (n<0||n>39)
printf("Erro: a Carta introduzida tem se ser entre 0 e 39.\n");

    int input; // valor dado pelo utilizador

    int naipe = input / 10;  // valor do naipe (divisão inteira por 10)
    int carta = input % 10; // valor da carta (resto da divisão inteira por 10)

    char cartas[] = "23456DVR7A";
    char carta_do_utilizador = cartas[carta];

    char naipes[] = "copas,ouros,paus,espadas";
    char naipe_do_utilizador = naipes[naipe];
    printf("carta introduzida: \n");
}

O que falta? Tá assim tão errado? Este é o exercício mais fácil, ainda tenho mais 2 que se baseiam neste. Assim não consigo passar para os outros.
Por favor alguém me ajuda? Tenho de entregar o work até dia 28/11
Cumps,

Miranda
Solução:

1º-compra um baralho de cartas;
2º-Pede ao prof para te fazer;
3º-Arranja um explicador;
4º-Muda para o sporting;
5º-faz algo como printf("escolhe 1 a 39")
scanf("dados")
while{
if(x<=39)
printf("o numero é x")
else
printf("escolhe de novo")
}

Claro que isso tudo dentro de um Array

ou entao o for acho que tambem da. Ja nao mexo em C algo tempo, mas espero ter ajudado. MAs olha segue o ponto 4 é o melhor
(29-11-2011 00:39)Article0 Escreveu: [ -> ]Solução:

1º-compra um baralho de cartas;
2º-Pede ao prof para te fazer;
3º-Arranja um explicador;
4º-Muda para o sporting;
5º-faz algo como printf("escolhe 1 a 39")
scanf("dados")
while{
if(x<=39)
printf("o numero é x")
else
printf("escolhe de novo")
}

Claro que isso tudo dentro de um Array

ou entao o for acho que tambem da. Ja nao mexo em C algo tempo, mas espero ter ajudado. MAs olha segue o ponto 4 é o melhor

EEK! wtf?
Bem..., isto há com cada um.
tentei ajudar ao estilo diferente so isso
(29-11-2011 00:44)Article0 Escreveu: [ -> ]tentei ajudar ao estilo diferente so isso

Tongue Ok.
int main(){

int num=0;

while(1){ // ciclo infinito

printf("Introduza carta (0-39):");
scanf("%d", &num);

if(num>=0 && num<=39)
{
if(num<10)
{
switch(num){
case 0:
printf("Carta introduzida: 2");
break;

case 1:
printf("Carta introduzida: 3");
break;

case 2:
printf("Carta introduzida: 4");
break;

case 3:
printf("Carta introduzida: 5");
break;

case 4:
printf("Carta introduzida:6");
break;

case 5:
printf("Carta introduzida: D");
break;

case 6:
printf("Carta introduzida: V");
break;

case 7:
printf("Carta introduzida: R");
break;

case 8:
printf("Carta introduzida: 7");
break;

case 9:
printf("Carta introduzida: A");
break;
}
}
else{
switch((num/10)){
case 1:
printf("Carta introduzida: 2");
break;

case 2:
printf("Carta introduzida: 3");
break;

case 3:
printf("Carta introduzida: 4");
break;

case 4:
printf("Carta introduzida: 5");
break;

case 5:
printf("Carta introduzida: 6");
break;

case 6:
printf("Carta introduzida: D");
break;

case 7:
printf("Carta introduzida: V");
break;

case 8:
printf("Carta introduzida: R");
break;

case 9:
printf("Carta introduzida: 7");
break;

case 10:
printf("Carta introduzida: A");
break;
}
}

}

}
}
return 0;
}
(29-11-2011 19:31)RuiPereira Escreveu: [ -> ]int main(){

int num=0;

while(1){ // ciclo infinito

printf("Introduza carta (0-39):");
scanf("%d", &num);

if(num>=0 && num<=39)
{
if(num<10)
{
switch(num){
case 0:
printf("Carta introduzida: 2");
break;

case 1:
printf("Carta introduzida: 3");
break;

case 2:
printf("Carta introduzida: 4");
break;

case 3:
printf("Carta introduzida: 5");
break;

case 4:
printf("Carta introduzida:6");
break;

case 5:
printf("Carta introduzida: D");
break;

case 6:
printf("Carta introduzida: V");
break;

case 7:
printf("Carta introduzida: R");
break;

case 8:
printf("Carta introduzida: 7");
break;

case 9:
printf("Carta introduzida: A");
break;
}
}
else{
switch((num/10)){
case 1:
printf("Carta introduzida: 2");
break;

case 2:
printf("Carta introduzida: 3");
break;

case 3:
printf("Carta introduzida: 4");
break;

case 4:
printf("Carta introduzida: 5");
break;

case 5:
printf("Carta introduzida: 6");
break;

case 6:
printf("Carta introduzida: D");
break;

case 7:
printf("Carta introduzida: V");
break;

case 8:
printf("Carta introduzida: R");
break;

case 9:
printf("Carta introduzida: 7");
break;

case 10:
printf("Carta introduzida: A");
break;
}
}

}

}
}
return 0;
}

Bem, está aqui uma lógica...
Dar a solução de bandeja, sem dar uma ajuda de como lá chegar, e logo no primeiro post de ambos...
Desculpem ter dado uma ideia logo, sem ter dado algumas luzes, mas também está na mãe dele tentar perceber e as dúvidas que tiver perguntar.
Mas tens razão...
ficou a faltar um switch para indicar o naipe colocado...
URL's de Referência