Erro que desconheço [RESOLVIDO]

1. Erro que desconheço [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 16/10/2014 - 13:58h

Recentemente, estava fazendo um programa de quadros mágicos. Mas o sistema me retornou este erro:

[Linker error] C:\Users\Tsutsui\AppData\Local\Temp\ccCoTx9d.o:Quadros Mágicos.c:(.text+0x211): undefined reference to `scan' 
collect2: ld returned 1 exit status


O código fonte do meu programa está logo abaixo:


#include <stdio.h>

main(){

int qua, acu;
char resp;

printf("Pense em algum número de 1 até 60, mas não me o diga!\n");
printf("Agora me diga quais dos quadros abaixo tem o número que você pensou, escrevendo o número do quadro: \n\n");

printf("\n Quadro 1 Quadro 2\n");
printf(" ----------------------------- ------------------------------\n");
printf("| 04 | 13 | 22 | 31 | 44 | 53 | | 32 | 37 | 42 | 47 | 52 | 57 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 05 | 14 | 23 | 36 | 45 | 54 | | 33 | 38 | 43 | 48 | 53 | 58 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 06 | 15 | 28 | 37 | 46 | 55 | | 34 | 39 | 44 | 49 | 54 | 59 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 07 | 20 | 29 | 38 | 47 | 60 | | 35 | 40 | 45 | 50 | 55 | 60 |\n");
printf(" ------------------------------ -----------------------------\n");
printf("| 12 | 21 | 30 | 39 | 52 | ** | | 36 | 41 | 46 | 51 | 56 | ** |\n");
printf(" ----------------------------- -----------------------------\n\n\n");

printf("\n Quadro 3 Quadro 4\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 08 | 13 | 26 | 31 | 44 | 53 | | 16 | 21 | 26 | 31 | 52 | 57 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 09 | 14 | 27 | 40 | 45 | 54 | | 17 | 22 | 27 | 48 | 53 | 58 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 10 | 15 | 28 | 41 | 46 | 55 | | 18 | 23 | 28 | 49 | 54 | 59 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 11 | 24 | 29 | 42 | 47 | 60 | | 19 | 24 | 29 | 50 | 55 | 60 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 12 | 25 | 30 | 43 | 56 | ** | | 20 | 25 | 30 | 51 | 56 | ** |\n");
printf(" ----------------------------- -----------------------------\n\n\n");

printf("\n Quadro 5 Quadro 6\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 01 | 11 | 21 | 31 | 41 | 51 | | 02 | 11 | 22 | 31 | 42 | 51 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 03 | 13 | 23 | 33 | 43 | 53 | | 03 | 14 | 23 | 34 | 43 | 54 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 05 | 15 | 25 | 35 | 45 | 55 | | 06 | 15 | 26 | 35 | 46 | 55 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 07 | 17 | 27 | 37 | 47 | 57 | | 07 | 18 | 27 | 38 | 47 | 58 |\n");
printf(" ----------------------------- -----------------------------\n");
printf("| 09 | 19 | 29 | 39 | 49 | 59 | | 10 | 19 | 30 | 39 | 50 | 59 |\n");
printf(" ----------------------------- -----------------------------\n\n\n");

while ( resp = 's') {
printf("Digite o número do quadro: ");
scanf("%d", &qua);
switch (qua) {
case 1: acu = acu+4;
case 2: acu = acu+32;
case 3: acu = acu+8;
case 4: acu = acu+16;
case 5: acu = acu+1;
case 6: acu = acu+2;
}
printf("O seu numero esta em mais algum quadro? (s/n)");
scan("% c", &resp);
}

printf("O número em que vc pensou foi: %d", acu);

getch();

}



Quem puder me ajudar eu agradeço muito.


  


2. MELHOR RESPOSTA

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 16/10/2014 - 18:21h

Amigo , vc tem que usar o do{}while() , pq ele terá que executar pelo menos 1 vez.

Espero que o codigo esteja do jeito que voce quer :)



#include <stdio.h>

/*
*
* '\t' no Printf ele da uma tabulacao
*
* Se ajudei , marque o topico como resolvido
* e marque a melhor respota =D
*
* ~Thihup
*
*/

int main(){
int qua, acu = 0;
char resp = 's';

printf("Pense em algum número de 1 até 60, mas não me o diga!\n");
printf("Agora me diga quais dos quadros abaixo tem o número que você pensou, escrevendo o número do quadro: \n\n");

printf("\n Quadro 1\t\t\t\t Quadro 2\n");
printf(" -----------------------------\t\t ------------------------------\n");
printf("| 04 | 13 | 22 | 31 | 44 | 53 |\t\t| 32 | 37 | 42 | 47 | 52 | 57 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 05 | 14 | 23 | 36 | 45 | 54 |\t\t| 33 | 38 | 43 | 48 | 53 | 58 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 06 | 15 | 28 | 37 | 46 | 55 |\t\t| 34 | 39 | 44 | 49 | 54 | 59 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 07 | 20 | 29 | 38 | 47 | 60 |\t\t| 35 | 40 | 45 | 50 | 55 | 60 |\n");
printf(" ------------------------------\t\t -----------------------------\n");
printf("| 12 | 21 | 30 | 39 | 52 | ** |\t\t| 36 | 41 | 46 | 51 | 56 | ** |\n");
printf(" -----------------------------\t\t -----------------------------\n\n\n");

printf("\n Quadro 3\t\t\t\t Quadro 4\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 08 | 13 | 26 | 31 | 44 | 53 |\t\t| 16 | 21 | 26 | 31 | 52 | 57 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 09 | 14 | 27 | 40 | 45 | 54 |\t\t| 17 | 22 | 27 | 48 | 53 | 58 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 10 | 15 | 28 | 41 | 46 | 55 |\t\t| 18 | 23 | 28 | 49 | 54 | 59 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 11 | 24 | 29 | 42 | 47 | 60 |\t\t| 19 | 24 | 29 | 50 | 55 | 60 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 12 | 25 | 30 | 43 | 56 | ** |\t\t| 20 | 25 | 30 | 51 | 56 | ** |\n");
printf(" -----------------------------\t\t -----------------------------\n\n\n");

printf("\n Quadro 5\t\t\t\t Quadro 6\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 01 | 11 | 21 | 31 | 41 | 51 |\t\t| 02 | 11 | 22 | 31 | 42 | 51 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 03 | 13 | 23 | 33 | 43 | 53 |\t\t| 03 | 14 | 23 | 34 | 43 | 54 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 05 | 15 | 25 | 35 | 45 | 55 |\t\t| 06 | 15 | 26 | 35 | 46 | 55 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 07 | 17 | 27 | 37 | 47 | 57 |\t\t| 07 | 18 | 27 | 38 | 47 | 58 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 09 | 19 | 29 | 39 | 49 | 59 |\t\t| 10 | 19 | 30 | 39 | 50 | 59 |\n");
printf(" -----------------------------\t\t -----------------------------\n\n\n");

do{
printf("Digite o número do quadro: ");
scanf("%d", &qua);
switch(qua){
case 1: acu +=4; break;
case 2: acu +=32;break;
case 3: acu +=8; break;
case 4: acu +=16;break;
case 5: acu +=1; break;
case 6: acu +=2; break;
}

getchar();
printf("O seu numero esta em mais algum quadro? (s/n) ");
scanf("%c", &resp);

}while( resp == 's' || resp == 'S');
printf("O número em que vc pensou foi: %d", acu);

getchar();
return 0;
}



Qualquer duvida só perguntar =D

[]'s

T+

3. Re: Erro que desconheço [RESOLVIDO]

Igor Morais
igormorais

(usa Gentoo)

Enviado em 16/10/2014 - 15:51h

Tá no scanf que você errou, colocou: scan. Geralmente o compilador te informa onde foi o erro, acostume-se a olhar os logs.


4. Re: Erro que desconheço [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 16/10/2014 - 16:10h

igormorais escreveu:

Tá no scanf que você errou, colocou: scan. Geralmente o compilador te informa onde foi o erro, acostume-se a olhar os logs.


Obrigado pela dica. mais uma dúvida que eu tenho é que ele não está encerrando o "while" quando eu digito "n". Eu estou errando tudo isso porque sou aluno iniciante, faço pesquisas na internet e não consigo encontrar a resposta que eu queria. Antes, ele estava dando um looping infinito, daí coloquei o fflush(stdin). Mas depois que o coloquei, mesmo quando digito "n" para parar de adicionar valor ao contador, ele continua.



5. Re: Erro que desconheço [RESOLVIDO]

Igor Morais
igormorais

(usa Gentoo)

Enviado em 16/10/2014 - 16:13h

faça: while(resp == 's')
= atribuição
== comparação


6. Re: Erro que desconheço [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 16/10/2014 - 16:32h

igormorais escreveu:

faça: while(resp == 's')
= atribuição
== comparação


Ele agora passa direto e mostra a última frase a ser exibida:
O número em que vc pensou foi: 2130567168 


OBS: Já coloquei os breaks em cada case, pensei que fosse isso, mas não é. Não aparece nenhum erro de log.




7. Re: Erro que desconheço [RESOLVIDO]

Hisashi Tsutsui
tsutsui

(usa Outra)

Enviado em 16/10/2014 - 18:48h

Thihup escreveu:

Amigo , vc tem que usar o do{}while() , pq ele terá que executar pelo menos 1 vez.

Espero que o codigo esteja do jeito que voce quer :)



#include <stdio.h>

/*
*
* '\t' no Printf ele da uma tabulacao
*
* Se ajudei , marque o topico como resolvido
* e marque a melhor respota =D
*
* ~Thihup
*
*/

int main(){
int qua, acu = 0;
char resp = 's';

printf("Pense em algum número de 1 até 60, mas não me o diga!\n");
printf("Agora me diga quais dos quadros abaixo tem o número que você pensou, escrevendo o número do quadro: \n\n");

printf("\n Quadro 1\t\t\t\t Quadro 2\n");
printf(" -----------------------------\t\t ------------------------------\n");
printf("| 04 | 13 | 22 | 31 | 44 | 53 |\t\t| 32 | 37 | 42 | 47 | 52 | 57 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 05 | 14 | 23 | 36 | 45 | 54 |\t\t| 33 | 38 | 43 | 48 | 53 | 58 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 06 | 15 | 28 | 37 | 46 | 55 |\t\t| 34 | 39 | 44 | 49 | 54 | 59 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 07 | 20 | 29 | 38 | 47 | 60 |\t\t| 35 | 40 | 45 | 50 | 55 | 60 |\n");
printf(" ------------------------------\t\t -----------------------------\n");
printf("| 12 | 21 | 30 | 39 | 52 | ** |\t\t| 36 | 41 | 46 | 51 | 56 | ** |\n");
printf(" -----------------------------\t\t -----------------------------\n\n\n");

printf("\n Quadro 3\t\t\t\t Quadro 4\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 08 | 13 | 26 | 31 | 44 | 53 |\t\t| 16 | 21 | 26 | 31 | 52 | 57 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 09 | 14 | 27 | 40 | 45 | 54 |\t\t| 17 | 22 | 27 | 48 | 53 | 58 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 10 | 15 | 28 | 41 | 46 | 55 |\t\t| 18 | 23 | 28 | 49 | 54 | 59 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 11 | 24 | 29 | 42 | 47 | 60 |\t\t| 19 | 24 | 29 | 50 | 55 | 60 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 12 | 25 | 30 | 43 | 56 | ** |\t\t| 20 | 25 | 30 | 51 | 56 | ** |\n");
printf(" -----------------------------\t\t -----------------------------\n\n\n");

printf("\n Quadro 5\t\t\t\t Quadro 6\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 01 | 11 | 21 | 31 | 41 | 51 |\t\t| 02 | 11 | 22 | 31 | 42 | 51 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 03 | 13 | 23 | 33 | 43 | 53 |\t\t| 03 | 14 | 23 | 34 | 43 | 54 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 05 | 15 | 25 | 35 | 45 | 55 |\t\t| 06 | 15 | 26 | 35 | 46 | 55 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 07 | 17 | 27 | 37 | 47 | 57 |\t\t| 07 | 18 | 27 | 38 | 47 | 58 |\n");
printf(" -----------------------------\t\t -----------------------------\n");
printf("| 09 | 19 | 29 | 39 | 49 | 59 |\t\t| 10 | 19 | 30 | 39 | 50 | 59 |\n");
printf(" -----------------------------\t\t -----------------------------\n\n\n");

do{
printf("Digite o número do quadro: ");
scanf("%d", &qua);
switch(qua){
case 1: acu +=4; break;
case 2: acu +=32;break;
case 3: acu +=8; break;
case 4: acu +=16;break;
case 5: acu +=1; break;
case 6: acu +=2; break;
}

getchar();
printf("O seu numero esta em mais algum quadro? (s/n) ");
scanf("%c", &resp);

}while( resp == 's' || resp == 'S');
printf("O número em que vc pensou foi: %d", acu);

getchar();
return 0;
}



Qualquer duvida só perguntar =D

[]'s

T+


Muito obrigado, Thihup, ajudou a resolver o meu problema. Só tenho uma dúvida, o que o return faz e porque tem que ser "do" e "while"? Obrigado por solucionar o meu problema.



8. Re: Erro que desconheço [RESOLVIDO]

Thiago Henrique Hüpner
Thihup

(usa Manjaro Linux)

Enviado em 16/10/2014 - 18:55h

Olhe que coloquei com o '\t' que da uma tabulacao e nao precisa usar a barra de espaço

O return retorna uma valor , nesse caso , informa ao SO que ocorreu tudo bem.

Amigo , na verdade , eu coloquei o "char resp; = 's'" , para poder usar o while sem o 'do'

Se nao quiser usar o do{}while() pode usar apenas while(resp == 's' || resp == 'S') que vai funcionar tambem , mas precisa definir o valor do resp no inicio do programa.

O do while consegue executa o trecho de codigo mesmo com uma condição que nao seja atendida

NOTA:Alguns links uteis :

http://www.cprogressivo.net/2013/02/O-que-e-e-como-usar-o-laco-DO-WHILE-em-linguagem-C.html

http://www.tiexpert.net/programacao/c/do-while.php



Qlq coisa me add no skype

Skype : thihup

Espero ter ajudado

[]'s

T+






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts