Ir ao conteúdo

guhbrj

Membro Pleno
  • Posts

    51
  • Cadastrado em

  • Última visita

Tudo que guhbrj postou

  1. Galera, boa noite ! Alguém saberia porque o vetor não sofre alteração após ser alterado pela função embaralhar ?
  2. @Luís Roberto C. da Silva Esse goto não é para ir para uma linha determinada do programa e sim para uma coordenada na tela xD
  3. Qualquer dúvida, poste aqui. Sempre tem alguém para ajudar.
  4. Olá ! Vi que não está armazenando os números. Pense na possibilidade de utilizar um vetor para guardar os números gerados aleatoriamente. Vi, também que no problema, pede-se que a quantidade de números a ser gerado deve ser informado pelo usuário através de "n". Depois que armazenar os números gerados, você pode usar um for dentro do outro para verificar os maiores entre eles e printar na tela. OBS: Não esqueça de levar em consideração o fato de que, conforme descrito no enunciado, deve-se sortear um número 'D' (sugiro de 0 a 9) e enumerar os maiores números alocados neste vetor que terminem com 'D'. Você tem que identificar dezena, centena e unidade. Abaixo, seguem algumas dicas de código: gerando números aleatórios através de seed / armazenando em um vetor. #include<stdlib.h> #include<time.h> #include<stdio.h> int main() { int n, i; srand(time(NULL)); printf("Entre com a quantidade de números que deseja gerar aleatoriamente: "); scanf("%d", &n); int vet[n]; for(i=0; i<n; i++) { vet[i]= rand()%100; //gerando numeros aleatórios até 100 printf("%d ", vet[i]); //esta linha é apenas para debbugar o código } }
  5. Era o /n! Muito obrigado
  6. Galera, boa noite ! Estou aprendendo Python na prática e gostaria da ajuda de vocês. Estou lendo uma string de um arquivo .dat, no meu pc e estou comparando com uma string mas não está dando certo .Acredito que o tipo do retorno da função read() não seja uma string. Abaixo segue o códido arq = open('C:\\Users\\MeuPC\\Desktop\\MonitoramentoIAlfred\\Arquivos\\LMsg.dat', 'r') mensagem = arq.read() if mensagem == "texto qualquer": print(mensagem) Não entra no IF. podem ajudar ? Tem que fazer um casting ? valeu
  7. Esse programa só calcula potências de 2. A variável x conta quantas vezes foi necessário fazer a divisão; O programa pega um número e devolve sua raiz, como o @CARRETA PCZAO pediu. Temos um clássico problema de arredondamento, tendo em vista que estamos trabalhando com divisão entre números inteiros. A proposta é demonstrar a possibilidade da implementação de uma função recursiva para a solução deste problema. O código é aberto e podem fazer as alterações necessárias para adequação, de acordo com a demanda de cada um.
  8. Aqui segue o programa "completo". Vale lembrar que este algoritmo só calcula potências de 2. Se quiser que calcule outras potencias, basta alterar a linha 30 //return pot (num/2, x+1); #include<stdio.h> int pot(int num, int x); int main() { int num, result=0 ,x=1; printf("entre com um numero: ") ; scanf("%d", &num); if(num%2==1) { printf("\npotencia nao existe"); } else { result = pot(num, x); printf("%d = 2^%d",num, result); } } int pot(int num, int x) { if(num/2>1) { printf("x = %d num = %d\n", x, num); // essa linha e so pra apurar o comportamento do codigo return pot (num/2, x+1); } else { return x; } }
  9. @Simon Viegas tente apenas ler num na main e passar por parâmetro pra função pot(), e tirar o retante do código. Deve funcionar.
  10. Já tem algo desenvolvido? Se puder postar. não tenho conhecimento mas podemos ajudar no algoritmo.
  11. guhbrj

    C Matriz de Led 8x8 MikroC

    Qual plataforma você está utilizando ?
  12. Você pode usar recursividade para isso. lembra de iniciar x=1, na main int pot(int num, int x) { if(num/2>1) { //debbug//printf("x = %d num = %d\n", x, num); return pot (num/2, x+1); } else { return x; }
  13. Boa noite @Marquinhos Rolemã, verifique se os componentes que está usando no Arduino estão de acordo com a especificação elétrica (se consome muita energia) as vezes estas peculiaridades podem impedir que o projeto seja compilado e upado pra placa. Tente remover algum do esquema elétrico e tente novamente ou toque a fonte de energia.
  14. Boa noite ! na linha "fscanf(arq1, "home/n" ,"rt");" se você está lendo de um arquivo e quer manipular os dados lidos, você deve 'jogá-lo' na memória, em uma variável de mesmo tipo do dado lido. Ex.: Supomos que o dado a ser lido era do tipo INT, logo ficaria : fscanf(arq1,"%d", &variaveldotipoINT); se deseja escrever, aí sim você usa o comando fprintf(arq1,"conteudo a ser escrito %d", variaveldotipoINT); atente também para o tipo de abertura do arquivo, se for leitura "r" ou escrita "w"
  15. Você vai usar esse código em algum Hardware tipo Arduino ou Raspberry? Pergunto isso porque a sintaxe pode variar de acordo com a aplicabilidade do código e, também sabendo da aplicabilidade, posso ajudar de maneira mais adequada.
  16. Nesse caso, acredito que nem precisaria de um FOR. seria apenas colocar: char novaentrada, string[20]; printf("\nEntre com a posicao que deseja alterar: "); scanf("%d", &posicao); //numero inteiro fflush(stdin); printf("Entre com o novo caracter para esta posicao: "); scanf("%c", &novaentrada); fflush(stdin); string[posicao]=novaentrada;
  17. Olá, tente implementar o código a seguir ao seu e veja se funciona. #include<stdio.h> #include<string.h> int main() { int tam, i=0, encontrei=0, j, insere=0; char email[30], dominio[20], valido=0; do { printf("Entre com o e-mail: "); gets(email); fflush(stdin); tam = strlen(email); printf("Tamanho da string: %d", tam); do { if(email[i] =='@') { printf("\nachei! ta na posicao %d", i+1); for(j=i; j<tam; j++) { dominio[insere]=email[j]; printf("%c - copiado para dominio[%d]\n", email[j], j); insere++; encontrei = 1; } } i++; }while((i<=tam)&&(encontrei==0)); valido = verificaEmail(dominio); // pode usar essa funcao que retorna um inteiro dos strcpy para mudar o valor da variavel "valido" para entao sair do laco de repeticao if(valido==0) { printf("\nEmail invalido, entre com outro endereco\n"); } }while(valido=0); } adicionado 7 minutos depois
  18. Tente inserir a biblioteca #include<string.h> essa função pertence à esta biblioteca.
  19. #include<stdio.h> int main() { int idade; FILE *ponteiro; ponteiro = fopen("Nome_do_Arquivo.txt", "w"); //neste caso abre o arquivo apenas para ESCRITA. printf("Entre com a idade: "); scanf("%d", &idade); fprintf(ponteiro,"idade: %d\n", idade); fclose(ponteiro); } adicionado 2 minutos depois Caso queira maiores esclarecimentos, segue link com os parâmetros de abertura de arquivo entre outros: http://wiki.icmc.usp.br/images/8/82/Manipulacao_arquivos.pdf
  20. guhbrj

    C Batalha Naval Matriz 10x10

    Galera, arrumei o código e está funcionando perfeitamente. Só tem que mexer em uma entrada de dado, se não me engano quantidade de embarcações que serão usadas. Só implementar verificação da entrada válida. Então, divirtam-se //by Gustavo Mello //10.12.2018 //ascii art font "http://www.asciiarte.com/" #include<stdio.h> #include<windows.h> #define L 10 #define C 10 //prototipo das funcoes int criaCampo(int campoJ1[L][C], int campoJ2[L][C]); int rodaJogo(int campoJ1[L][C], int campoJ2[L][C]); void exibeCampo(int campoJ1[L][C], int campoJ2[L][C], int vez, int bat); int main() { int campoJ1[L][C], campoJ2[L][C], op, game=1, campo=0; //system("MODE con cols=105 lines=50"); //opcional printf("\n\n\t\t\t\t\t\t BATALHA NAVAL\n\n\n\n"); printf("\t o o \n"); printf("\t o ooo\n"); printf("\t o oo ___ \n"); printf("\t o o | | #)\n"); printf("\t oo _|_|_#_\n"); printf("\t o | U505 |\n"); printf("\t __ ___________________| |____________________ \n"); printf("\t | -_______----------- )\n"); printf("\t >| _____ Brasil )\n"); printf("\t |__ - ---------_________________________________________________ )\n"); Sleep(2000); do{ do { system("CLS"); if(campo==1) { printf("\n\n\t\t\t\t\t\tMenu principal\n\n\n\n\n\t1 - Criar campo de batalha\n\t2 - Jogar (o)\n\t3 - Resultado\n\t4 - Sair\n\n\tEntre com uma opcao: "); } else { printf("\n\n\t\t\t\t\t\tMenu principal\n\n\n\n\n\t1 - Criar campo de batalha\n\t2 - Jogar (x)\n\t3 - Resultado\n\t4 - Sair\n\n\tEntre com uma opcao: "); } scanf("%d", &op); fflush(stdin); if((op!=1)&&(op!=2)&&(op!=3)&&(op!=4)) { printf("\n\tOpcao invalida!"); Sleep(1000); } }while((op!=1)&&(op!=2)&&(op!=3)&&(op!=4)); switch(op) { case 1: campo=criaCampo(campoJ1, campoJ2); campo =1 ; break; case 2: if(campo==1) { rodaJogo(campoJ1, campoJ2); } else { printf("\nVoce deve criar o campo antes de jogar !"); Sleep(2000); } } }while(game==1); } int criaCampo(int campoJ1[L][C], int campoJ2[L][C]) { system("CLS"); printf("\n\n\t\t\t\t\t\tCRIAR CAMPO DE BATALHA"); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\tCriando campo de batalha ...\n"); Sleep(1000); printf("\r\t\t\t\t\t\t~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~"); Sleep(100); printf("\n\n\t\t\t\t\t\t\tConcluido!\n"); Sleep(1000); int i, j; for(i=0;i<L;i++) { for(j=0; j<C; j++) { campoJ1[i][j]=0; campoJ2[i][j]=0; } } return 1; } void exibeCampo(int campoJ1[L][C], int campoJ2[L][C], int vez, int bat) { int i, j, num=0; if(bat==1) { printf("\n"); printf(" 0 1 2 3 4 5 6 7 8 9 \n\n"); if(vez==1) { for(i=0;i<C;i++) { printf("%d ",num); for(j=0; j<L; j++) { if((campoJ2[j][i]==0)||(campoJ2[j][i]==1)||(campoJ2[j][i]==2)||(campoJ2[j][i]==3)) { printf(" ~~~~ "); } if(campoJ2[j][i]==4) { printf("\\_X_/ "); } if(campoJ2[j][i]==5) { printf(" (X) "); } } printf("\n\n"); num++; } } //-----------------------------------------------------------------------------jogador 2------------------------------------------------------ if(vez==2) { for(i=0;i<C;i++) { printf("%d ",num); for(j=0; j<L; j++) { if((campoJ1[j][i]==0)||(campoJ1[j][i]==1)||(campoJ1[j][i]==2)||(campoJ1[j][i]==3)) { printf(" ~~~~ "); } if(campoJ1[j][i]==4) { printf(" (X) "); } if(campoJ1[j][i]==5) { printf("\\_X_/ "); } } printf("\n\n"); num++; } } } else { if(vez==1) { printf(" 0 1 2 3 4 5 6 7 8 9 \n\n"); for(i=0;i<C;i++) { printf("%d ",num); for(j=0; j<L; j++) { if((campoJ1[j][i]==1)||(campoJ1[j][i]==2)||(campoJ1[j][i]==3)) { printf("\\___/ "); } else { printf(" ~~~~ "); } } printf("\n\n"); num++; } } if(vez==2) { { printf(" 0 1 2 3 4 5 6 7 8 9 \n\n"); for(i=0;i<C;i++) { printf("%d ",num); for(j=0; j<L; j++) { if((campoJ2[j][i]==1)||(campoJ2[j][i]==2)||(campoJ2[j][i]==3)) { printf("\\___/ "); } else { printf(" ~~~~ "); } } printf("\n\n"); num++; } } } } } int rodaJogo(int campoJ1[L][C], int campoJ2[L][C]) { int inserir=0, emb, col, lin, vez=1, hitJ1=0, hitJ2=0, jogadasJ1=0, jogadasJ2=0, validaJogada=0, quant, bat=0; system("CLS"); printf("\t\t\t\tJOGAR\n\n\n\nQuantas embarcacoes serao inseridas por jogador?\nEntre com o numero: "); scanf("%d", &quant); fflush(stdin); do { do { vez=1; system("CLS"); printf("\t\t\tJogador # 1 e sua vez de inserir suas embarcacoes\n\n\n\tTipos de embarcacao\n\n"); printf("\t1 - Fragata\n\t2 - Destroyer\n\t3 - Sumarino\n\n"); exibeCampo(campoJ1, campoJ2, vez, bat); printf("Entre com o numero da embarcacao e tecle enter: "); scanf("%d", &emb); fflush(stdin); if((emb!=1)&&(emb!=2)&&(emb!=3)) { printf("Entrada invalida!"); Sleep(1000); } }while((emb!=1)&&(emb!=2)&&(emb!=3)); do { printf("Entre com as coordenadas\nColuna: "); scanf("%d", &col); fflush(stdin); if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)); do { printf("Linha: "); scanf("%d", &lin); fflush(stdin); if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)); if(campoJ1[col][lin]==0) { campoJ1[col][lin]=emb; printf("\nEmbarcacao inserida."); Sleep(1000); inserir++; } else { printf("\nPosicao invalida. Escolha outra coordenada. Nesta, ja ha uma embarcacao"); Sleep(3000); } }while(inserir<quant); inserir = 0; //-------------------------------------------------------------JOGADOR2------------------------------------------------------------------------------------- do { do { vez=2; system("CLS"); printf("\t\t\tJogador # 2 e sua vez de inserir suas embarcacoes\n\n\n\tTipos de embarcacao\n\n"); printf("\t1 - Fragata\n\t2 - Destroyer\n\t3 - Sumarino\n\n"); exibeCampo(campoJ1, campoJ2, vez, bat); printf("Entre com o numero da embarcacao e tecle enter: "); scanf("%d", &emb); fflush(stdin); if((emb!=1)&&(emb!=2)&&(emb!=3)) { printf("Entrada invalida!"); Sleep(1000); } }while((emb!=1)&&(emb!=2)&&(emb!=3)); do { printf("Entre com as coordenadas\nColuna: "); scanf("%d", &col); fflush(stdin); if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)); do { printf("Linha: "); scanf("%d", &lin); fflush(stdin); if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)); if(campoJ2[col][lin]==0) { campoJ2[col][lin]=emb; printf("\nEmbarcacao inserida."); Sleep(1000); inserir++; } else { printf("\nPosicao invalida. Escolha outra coordenada. Nesta, ja ha uma embarcacao"); Sleep(3000); } }while(inserir<quant); bat = 1 ; vez=1; system("CLS"); printf("\n\n\t\t\t\t\t\tTUDO PRONTO ! QUE A BATALHA COMECE !\n\n"); printf("\n\n "); printf("\n . |"); printf("\n + |"); printf("\n . | *+W+-*"); printf("\n . +y +W+ . H ."); printf("\n . +y |I. y | ! H= . . ^"); printf("\n ! \\ . |H '. // | ___. .! H ! +--.--y ! V"); printf("\n ! \\ \\ +=|H|=='.=+ | |====\\ _ '_H_H__H_. H_//= J ! !"); printf("\n . ! \\' VVV_HHH_\\/__'._H | E \\_|=|_|========|_|==|____H. ! _______."); printf("\n I-H_I=I=HH_==_|I_IIIII_I_I_=HH|======.I-I-I-=======-I=I=I=I_=H|=H'===I=I//"); printf("\n \\ ,"); printf("\n | //"); printf("\n .___________________________________________________________________'\n\n\n"); system("PAUSE"); Sleep(1000); //-----------------------------------------------------------batalha --------------------------------------------- do{ do{ do { system("CLS"); printf("\t\t JOGADOR #%d E SUA VEZ DE JOGAR\n\n\n\n", vez); exibeCampo(campoJ1, campoJ2, vez, bat); printf("\n\nEntre com as coordenadas\nColuna: ", vez); scanf("%d", &col); fflush(stdin); if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)); do { printf("Linha: "); scanf("%d", &lin); fflush(stdin); if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)); if(vez==1) { switch(campoJ2[col][lin]) { case 0: printf("\nChuaaa... Acertou a agua !"); campoJ2[col][lin] = 4; validaJogada = 1; break; case 4: printf("\nErr... voce ja jogou nesta coordenada. Tente outra !"); break; case 1: printf("\nBooom ... voce destruiu uma Fragata inimiga !"); campoJ2[col][lin]=5; hitJ2++; validaJogada = 1; break; case 2: printf("\nBooom ... voce destruiu um Destroyer inimigo !"); campoJ2[col][lin]=5; hitJ2++; validaJogada = 1; break; case 3: printf("\nBooom ... voce destruiu um Submarino inimigo !"); campoJ2[col][lin]=5; hitJ2++; validaJogada = 1; break; case 5: printf("\nVoce ja destruiu essa embarcacao. Tente outra coordenada!"); break; } Sleep(1500); system("CLS"); } //-------------------------------------------------------------------------------------------------------------------------------------- if(vez==2) { switch(campoJ1[col][lin]) { case 0: printf("\nChuaaa... Acertou a agua !"); Sleep(1500); campoJ1[col][lin] = 4; validaJogada = 1; break; case 4: printf("\nErr... voce ja jogou nesta coordenada. Tente outra !"); break; case 1: printf("\nBooom ... voce destruiu uma Fragata inimiga !"); Sleep(1500); campoJ1[col][lin] = 5; hitJ1++; validaJogada = 1; break; case 2: campoJ1[col][lin] = 5; printf("\nBooom ... voce destruiu um Destroyer inimigo !"); Sleep(1500); hitJ1++; validaJogada = 1; break; case 3: printf("\nBooom ... voce destruiu um Submarino inimigo !"); Sleep(1500); campoJ1[col][lin] = 5; hitJ1++; validaJogada = 1; break; case 5: printf("\nVoce ja destruiu essa embarcacao. Tente outra coordenada!"); break; } Sleep(1500); system("CLS"); } }while(validaJogada==0); validaJogada=0; vez++; if(vez==3) { vez=1; } }while((hitJ1<quant)&&(hitJ2<quant)); printf("\n\nJOGO ACABOU"); if(hitJ1>hitJ2) { printf("\n\nJogador #2 e o vencedor !"); } else { printf("\n\nJogador #1 e o vencedor !\n\n"); } system("PAUSE"); }
  21. guhbrj

    C Batalha Naval Matriz 10x10

    vê se isso ajuda ? o código está com alguns erros, principalmente na exibição dos campos, tem pouca coisa pra corrigir. Podemos continuar desenvolvendo em paralelo, se quiser. #include<stdio.h> #include<windows.h> #define L 10 #define C 10 //prototipo das funcoes int criaCampo(int campoJ1[L][C], int campoJ2[L][C]); int rodaJogo(int campoJ1[L][C], int campoJ2[L][C]); void exibeCampo(int campoJ1[L][C], int campoJ2[L][C], int vez); int main() { int campoJ1[L][C], campoJ2[L][C], op, game=1, campo=0; printf("\n\n\t\t\t\t\t\t BATALHA NAVAL\n\n\n\n"); printf("\t o o \n"); printf("\t o ooo\n"); printf("\t o oo\n"); printf("\t o o | #)\n"); printf("\t oo _|_|_#_\n"); printf("\t o | U505 |\n"); printf("\t __ ___________________| |____________________ \n"); printf("\t | -_______----------- )\n"); printf("\t >| _____ Brasil )\n"); printf("\t |__ - ---------_________________________________________________ )\n"); Sleep(2000); do{ do { system("CLS"); if(campo==1) { printf("\n\n\t\t\t\t\t\tMenu principal\n\n\n\n\n\t1 - Criar campo de batalha\n\t2 - Jogar (o)\n\t3 - Resultado\n\t4 - Sair\n\n\tEntre com uma opcao: "); } else { printf("\n\n\t\t\t\t\t\tMenu principal\n\n\n\n\n\t1 - Criar campo de batalha\n\t2 - Jogar (x)\n\t3 - Resultado\n\t4 - Sair\n\n\tEntre com uma opcao: "); } scanf("%d", &op); fflush(stdin); if((op!=1)&&(op!=2)&&(op!=3)&&(op!=4)) { printf("\n\tOpcao invalida!"); Sleep(1000); } }while((op!=1)&&(op!=2)&&(op!=3)&&(op!=4)); switch(op) { case 1: campo=criaCampo(campoJ1, campoJ2); campo =1 ; break; case 2: if(campo==1) { rodaJogo(campoJ1, campoJ2); } else { printf("\nVoce deve criar o campo antes de jogar !"); Sleep(2000); } } }while(game==1); } int criaCampo(int campoJ1[L][C], int campoJ2[L][C]) { system("CLS"); printf("\n\n\t\t\t\t\t\tCRIAR CAMPO DE BATALHA"); printf("\n\n\n\n\n\n\n\n\n\n\t\t\t\t\t\tCriando campo de batalha ...\n"); Sleep(1000); printf("\r\t\t\t\t\t\t~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~"); Sleep(100); printf("\r\t\t\t\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~"); Sleep(100); printf("\n\n\t\t\t\t\t\t\tConcluido!\n"); Sleep(1000); int i, j; for(i=0;i<L;i++) { for(j=0; j<C; j++) { campoJ1[i][j]=0; campoJ2[i][j]=0; } } return 1; } void exibeCampo(int campoJ1[L][C], int campoJ2[L][C], int vez) { int i, j, quebra=0, num=0; printf("\nentrei em exibir VALOR DE VEZ: %d\n", vez); system("PAUSE"); printf(" 0 1 2 3 4 5 6 7 8 9 \n\n"); if(vez==1) { for(i=0;i<=L;i++) { for(j=0; j<C; j++) { if(quebra<L) { if(campoJ2[i][j]==0) { printf(" ~~~~ "); quebra++; } else { if(campoJ2[i][j]==4) { printf(" (X) "); quebra++; } if(campoJ2[i][j]==5) { printf("\\_X_/ "); } } } else { printf("\n%d ", num); quebra=0; num++; } } } } //-----------------------------------------------------------------------------jogador 2------------------------------------------------------ if(vez==2) { for(i=0;i<=L;i++) { for(j=0; j<=C; j++) { if(quebra<L) { if(campoJ1[i][j]==0) { printf(" ~~~~ "); quebra++; } else { if(campoJ1[i][j]==4) { printf(" (X) "); quebra++; } if(campoJ1[i][j]==5) { printf("\\_X_/ "); } } } else { printf("\n"); quebra=0; } } } } } int rodaJogo(int campoJ1[L][C], int campoJ2[L][C]) { int inserir=0, emb, col, lin, vez=1, hitJ1=0, hitJ2=0, jogadasJ1=0, jogadasJ2=0, validaJogada=0; do { do { system("CLS"); printf("Jogador # 1\nEmbarcacoes inseridas: %d\n\n\n\n", inserir); printf("1 - Fragata\n2 - Destroyer\n3 - Sumarino\n\nEntre com o tipo de embarcacao que deseja inserir: "); scanf("%d", &emb); fflush(stdin); if((emb!=1)&&(emb!=2)&&(emb!=3)) { printf("Entrada invalida!"); Sleep(1000); } }while((emb!=1)&&(emb!=2)&&(emb!=3)); do { printf("Entre com as coordenadas\nColuna: "); scanf("%d", &col); fflush(stdin); if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)); do { printf("Linha: "); scanf("%d", &lin); fflush(stdin); if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)); if(campoJ1[col][lin]==0) { campoJ1[col][lin]=emb; printf("\nEmbarcacao inserida."); Sleep(1000); inserir++; } else { printf("\nPosicao invalida. Escolha outra coordenada. Nesta, ja ha uma embarcacao"); Sleep(3000); } }while(inserir<2); // mudar depois inserir = 0; //-------------------------------------------------------------JOGADOR2------------------------------------------------------------------------------------- do { do { system("CLS"); printf("Jogador # 2\nEmbarcacoes inseridas: %d\n\n\n\n", inserir); printf("1 - Fragata\n2 - Destroyer\n3 - Sumarino\n\nEntre com o tipo de embarcacao que deseja inserir: "); scanf("%d", &emb); fflush(stdin); if((emb!=1)&&(emb!=2)&&(emb!=3)) { printf("Entrada invalida!"); Sleep(1000); } }while((emb!=1)&&(emb!=2)&&(emb!=3)); do { printf("Entre com as coordenadas\nColuna: "); scanf("%d", &col); fflush(stdin); if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)); do { printf("Linha: "); scanf("%d", &lin); fflush(stdin); if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)); if(campoJ2[col][lin]==0) { campoJ2[col][lin]=emb; printf("\nEmbarcacao inserida."); Sleep(1000); inserir++; } else { printf("\nPosicao invalida. Escolha outra coordenada. Nesta, ja ha uma embarcacao"); Sleep(3000); } }while(inserir<2); // mudar depois system("CLS"); printf("\n\n\t\t\t\t\t\tTUDO PRONTO ! QUE A BATALHA COMECE !\n\n"); printf("\n\n "); printf("\n . |"); printf("\n + |"); printf("\n . | *+W+-*"); printf("\n . +y +W+ . H ."); printf("\n . +y |I. y | ! H= . . ^"); printf("\n ! \\ . |H '. // | ___. .! H ! +--.--y ! V"); printf("\n ! \\ \\ +=|H|=='.=+ | |====\\ _ '_H_H__H_. H_//= J ! !"); printf("\n . ! \\' VVV_HHH_\\/__'._H | E \\_|=|_|========|_|==|____H. ! _______."); printf("\n I-H_I=I=HH_==_|I_IIIII_I_I_=HH|======.I-I-I-=======-I=I=I=I_=H|=H'===I=I//"); printf("\n \\ ,"); printf("\n | //"); printf("\n .___________________________________________________________________'\n\n\n"); system("PAUSE"); Sleep(1000); do{ do{ do { exibeCampo(campoJ1, campoJ2, vez); printf("\nJogador #%d\n Entre com as coordenadas\nColuna: ", vez); scanf("%d", &col); fflush(stdin); if((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((col!=0)&&(col!=1)&&(col!=2)&&(col!=3)&&(col!=4)&&(col!=5)&&(col!=6)&&(col!=7)&&(col!=8)&&(col!=9)); do { printf("Linha: "); scanf("%d", &lin); fflush(stdin); if((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)) { printf("\nPosicao invalida! Tente novamente."); Sleep(3000); system("CLS"); } }while((lin!=0)&&(lin!=1)&&(lin!=2)&&(lin!=3)&&(lin!=4)&&(lin!=5)&&(lin!=6)&&(lin!=7)&&(lin!=8)&&(lin!=9)); if(vez==1) { switch(campoJ2[col][lin]) { case 0: printf("\nChuaaa... Acertou a agua !"); campoJ2[col][lin] = 4; validaJogada = 1; break; case 4: printf("\nErr... voce já jogou nesta coordenada. Tente outra !"); Sleep(1500); break; case 1: printf("\nBooom ... voce destruiu uma Fragata inimiga !"); campoJ2[col][lin]=5; hitJ2++; validaJogada = 1; break; case 2: printf("\nBooom ... voce destruiu um Destroyer inimigo !"); campoJ2[col][lin]=5; hitJ2++; validaJogada = 1; break; case 3: printf("\nBooom ... voce destruiu um Submarino inimigo !"); campoJ2[col][lin]=5; hitJ2++; validaJogada = 1; break; case 5: printf("\nVoce ja destruiu essa embarcacao. Tente outra coordenada!"); Sleep(1500); break; } } //-------------------------------------------------------------------------------------------------------------------------------------- if(vez==2) { switch(campoJ1[col][lin]) { case 0: printf("\nChuaaa... Acertou a agua !"); Sleep(1500); campoJ1[col][lin] = 4; validaJogada = 1; break; case 4: printf("\nErr... voce ja jogou nesta coordenada. Tente outra !"); Sleep(1500); break; case 1: printf("\nBooom ... voce destruiu uma Fragata inimiga !"); Sleep(1500); campoJ1[col][lin] = 5; hitJ1++; validaJogada = 1; break; case 2: campoJ1[col][lin] = 5; printf("\nBooom ... voce destruiu um Destroyer inimigo !"); Sleep(1500); hitJ1++; validaJogada = 1; break; case 3: printf("\nBooom ... voce destruiu um Submarino inimigo !"); Sleep(1500); campoJ1[col][lin] = 5; hitJ1++; validaJogada = 1; break; case 5: printf("\nVoce ja destruiu essa embarcacao. Tente outra coordenada!"); Sleep(1500); break; system("CLS"); exibeCampo(campoJ1, campoJ2, vez); } } }while(validaJogada==0); validaJogada=0; vez++; if(vez==3) { vez=1; } }while((hitJ1<10)||(hitJ2<10)); }
  22. guhbrj

    C Batalha Naval Matriz 10x10

    Tem que ser um campo pra os 2 ? Vejo um problema caso os jogadores resolvam por as embarcações na mesma linha/coluna.
  23. allandxd, a variável tag deveria receber o conteúdo da variável mp - (operação de subtração) conteúdo da variável mc.
  24. Obrigado, gente, pela ajuda. Uso o Dev++ e, aqui no meu compilador, está exibindo esse erro: 352 26 G:\conversaoPCS.c [Error] dereferencing pointer to incomplete type conforme na imagem
  25. #include<stdio.h> #include<windows.h> #include<stdlib.h> #include<string.h> typedef struct computador{ int mp; int mc; int cbloco; int bcelula; int lconjunto; int bloco; int numero; }pc; typedef struct pclista{ int numpc; struct pclista *prox; struct pc *maquina; }lista; lista* novo(lista *inicio); int calc_Mp(int mprincipal, int tam, int cont); int calc_Mc(int mcache, int tam, int cont); int calc_celula_bloco(int celbloc, int tam, int cont); int calc_byte_celula(int bcel, int tam, int cont); int calc_linha_conjunto(int linhaconj,int tam,int cont); void exibir(lista *inicio); void buscar(lista *inicio); int main() { lista *inicio; inicio = NULL; char opcao; do { system("CLS"); printf("--------------MENU----------------\n"); printf("| |\n"); printf("| Novo computador [n] |\n"); printf("| Editar computador [e] |\n"); printf("| Ver informações [i] | \n"); printf("| Apagar computador [a] |\n"); printf("| Exibir lista [l] |\n"); printf("| Sair do programa [s] |\n"); printf("| |\n"); printf("----------------------------------\n"); printf("\nEntre com uma opcao: "); scanf("%c", &opcao); fflush(stdin); switch(opcao) { default : printf("\nOpcao invalida"); Sleep(1000); break; case 'n': inicio = novo(inicio); break; case 'l': exibir(inicio); break; case 'i': buscar(inicio); break; } }while(opcao!='s'); } lista* novo(lista *inicio) { lista *auxLista; pc *auxPc; int numpc=1, tam=1, cont=0, numerador = 0; int cb, bc, lj, mprincipal, mcache, celbloc, bcel, linhaconj, bloc, ram , cache, aux; char umMp[3], umMc[3]; system("CLS"); printf("Entre com o tamanho da Memoria princial\nEx.: 8 Gb\nDigite: "); scanf("%d %s", &mprincipal, &umMp); fflush(stdin); printf("Entre com o tamanho da Memoria cache\nEx:. 2 Mb\nDigite: "); scanf("%d %s", &mcache, &umMc); fflush(stdin); printf("Entre com quantidade de celulas por bloco: "); scanf("%d", &celbloc); fflush(stdin); printf("Entre com quantidade de byte por celula: "); scanf("%d", &bcel); fflush(stdin); printf("Entre com a quantidade de linhas por conjunto: "); scanf("%d", &linhaconj); fflush(stdin); if((strcmp(umMp, "K")==0)||(strcmp(umMp, "k")==0)) { ram = 0; } if((strcmp(umMp, "kb")==0)||(strcmp(umMp, "Kb")==0)||(strcmp(umMp, "kB")==0)||(strcmp(umMp, "KB")==0)) { ram = 10; } if((strcmp(umMp, "mb")==0)||(strcmp(umMp, "Mb")==0)||(strcmp(umMp, "mB")==0)||(strcmp(umMp, "MB")==0)) { ram = 20; } if((strcmp(umMp, "gb")==0)||(strcmp(umMp, "Gb")==0)||(strcmp(umMp, "gB")==0)||(strcmp(umMp, "GB")==0)) { ram = 30; } if((strcmp(umMp, "tb")==0)||(strcmp(umMp, "Tb")==0)||(strcmp(umMp, "tB")==0)||(strcmp(umMp, "TB")==0)) { ram = 40; } //--------------------------------------------------------------------------cache---------------------------------------- if((strcmp(umMc, "K")==0)||(strcmp(umMc, "k")==0)) { cache = 0; } if((strcmp(umMc, "kb")==0)||(strcmp(umMc, "Kb")==0)||(strcmp(umMc, "kB")==0)||(strcmp(umMc, "KB")==0)) { cache = 10; } if((strcmp(umMc, "mb")==0)||(strcmp(umMc, "Mb")==0)||(strcmp(umMc, "mB")==0)||(strcmp(umMc, "MB")==0)) { cache = 20; } if((strcmp(umMc, "gb")==0)||(strcmp(umMc, "Gb")==0)||(strcmp(umMc, "gB")==0)||(strcmp(umMc, "GB")==0)) { cache = 30; } if((strcmp(umMc, "tb")==0)||(strcmp(umMc, "Tb")==0)||(strcmp(umMc, "tB")==0)||(strcmp(umMc, "TB")==0)) { cache = 40; } cb=calc_celula_bloco(celbloc, tam, cont); bc=calc_byte_celula(bcel, tam, cont); lj=calc_linha_conjunto(linhaconj, tam, cont); ram+=calc_Mp(mprincipal, tam, cont); cache+=calc_Mc(mcache, tam, cont); aux = ram; aux-=celbloc; aux-=bcel; bloc=aux; // < -- valor do bloco printf("\nCelula/bloco -> %d = 2^ %d", celbloc, cb); printf("\nByte/celula -> %d = 2^ %d", bcel, bc); printf("\nLinha/conjunto -> %d = 2^ %d", linhaconj, lj); printf("\nMemoria RAM -> %d %s = 2^ %d",mprincipal, umMp, ram); printf("\nMemoria Cache -> %d %s = 2^ %d",mcache, umMc, cache); printf("\nBloco (assoc) -> %d\n\n", bloc); system("PAUSE"); numerador ++; //inserindo computador na lista auxPc=malloc(sizeof(pc)); auxLista=malloc(sizeof(lista)); auxLista->maquina = auxPc; // <- salvei na lista o endereco onde a maquina esta auxPc->bcelula = bc; auxPc->bloco = bloc; auxPc->cbloco = bc; auxPc->lconjunto = lj; auxPc->mc = cache; auxPc->mp = ram; printf("entre com um numero para o computador: "); scanf("%d", &numerador); auxPc->numero = numerador; auxLista->numpc = numerador; auxLista->prox = inicio; return(auxLista); } int calc_celula_bloco(int celbloc, int tam, int cont) { if(celbloc>tam) { return calc_Mp(celbloc, tam+tam, cont+1); } else { return cont; } } int calc_byte_celula(int bcel, int tam, int cont) { if(bcel>tam) { return calc_Mp(bcel, tam+tam, cont+1); } else { return cont; } } int calc_linha_conjunto(int linhaconj,int tam,int cont) { if(linhaconj>tam) { return calc_Mp(linhaconj, tam+tam, cont+1); } else { return cont; } } int calc_Mp(int mprincipal, int tam, int cont) { if(mprincipal>tam) { return calc_Mp(mprincipal, tam+tam, cont+1); } else { return cont; } } calc_Mc(int mcache, int tam, int cont) { if(mcache>tam) { return calc_Mp(mcache, tam+tam, cont+1); } else { return cont; } } void exibir(lista *inicio) { system("CLS"); printf("Lista de computadores:\n\n\n "); if(inicio==NULL) { printf("\nNada a listar"); Sleep(1000); } else { while(inicio!=NULL) { printf("\nComputador %d ", inicio->numpc); inicio = inicio->prox; } printf("\n"); system("PAUSE"); } } void buscar(lista *inicio) { int n; int sair=0, tag, indice; system("CLS"); printf("Entre com o numero do computador: "); scanf("%d", &n); fflush(stdin); if(inicio==NULL) { printf("\nNao ha computador cadastrado."); Sleep(1500); } else { while((inicio!=NULL)&&(sair==0)) { if(inicio->numpc==n) { printf("Achei a maquina!\n"); tag = inicio->maquina->mp-inicio->maquina->mc; indice = inicio->maquina->bloco-tag; sair=1; system("PAUSE"); } else { inicio=inicio->prox; } } } } adicionado 2 minutos depois esse é o trecho problemático.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!