Ir ao conteúdo

devair1010

Membro Pleno
  • Posts

    6.317
  • Cadastrado em

  • Última visita

Tudo que devair1010 postou

  1. @isrnick parece que o VS Code tem IA ou um sistema de reconhecimento embutido que consegue perceber esse fato do tipo de linguagem, e ao perceber que a extensão é ".cpp" e o código usa comandos da linguagem, ele executa o código mesmo assim, e sem nenhum erro, então creio que o problema seja outro, pois o @Pedro_5316C disse que o VS Code não consegue importar bibliotecas, e ele se tivesse postado os erros de compilação seria bom para saber o que teria acontecido, mas pode ser que seja o tal do "json" referente a esse código, ou mesmo as extensões, com bem disse @arfneto, pois aqui testei no VisuaL Studio Code com essas extensões: e funcionou bem tanto para arquivos ".c" quanto para arquivos ".cpp" :, porém não gerou nenhum executável .
  2. @Aleatorio02 @Aleatorio02 para fazer uma pesquisa nas posições do vetor , você precisa usar um laço de repetição que pode bem ser o "para / fimpara" e uma outra variável para marcar que o nome foi encontrado , e assim após o término da pesquisa se essa tal variável estiver com o valor determinado então mostrar o nome encontrado , pois do jeito que está ele vai escrever várias vezes essa mensagem "Usuário não encontrado . . . !" e essa sua função poderia ser assim : procedimento menu_procurar Var nome : caractere achou : logico Inicio limpatela escreval ("Digite que está procurando:") leia (nome) para indice de 1 ate 5 passo 1 faca se nome = nomes[indice] então achou := verdadeiro interrompa fimse fimpara se não achou então escreval("Usuário não encontrado . . . !") fimse se achou então escreval("") escreval("O indice correspondente é:") escreval("") escreval("Nome -----:", nomes[indice ]) escreval("Idade ----:", idade[indice ]) escreval("Endereço -:", end [indice ]) fimse timeer fimprocedimento e na função cadasastrar poderia ter como fazer o cadastro de um nome de cada vez , para não ter que inserir cinco nome obrigatoriamente , e seria isso assim : procedimento menu_cadastrar Var opcao1, indice : inteiro fim : caractere Inicio limpatela escreval ("Cadastrar pelo índice") para indice de 1 ate 5 faca escreval ("Digite nome: ") leia (nomes[indice]) escreval ("Digite idade: ") leia (idade[indice]) escreval ("Digite endereço: ") leia (end[indice]) escreval ("") escreval ("O índice cadastrado é:") escreval ("Nome: ",nomes[indice]) escreval ("Idade: ",idade[indice]) escreval ("Endereço: ",end[indice]) escreval ("") escreval("outro cadastroo S/N") leia( fim ) se fim <> "S" então interrompa fimse fimpara timeer fimprocedimento
  3. @DaviFonsecx seu código está funcionando bem , sim , tanto no codeblocks quanto no Visual Studio Code , e nesse último , talvez você ainda não sabe que precisa colocar a extensão do arquivo que você inseriu no VS Code , que é o indicador de qual linguagem é o código , e você postou na linguagem C então coloque "Nome_Do_Codigo.c" , senão ele não será reconhecido pelo compilador , e você pode incluir uma função de pausa para ver os resultados , pode ser o comando "Sleep" da biblioteca "windows.h" ou o comando "getch();" da biblioteca "<conio.h>" que apesar de não ser padrão da linguagem c , ainda funciona , ou mesmo criar uma função para esse objetivo , como essa aqui : for(int j=0; j<6000; j++) for(int i=0; i<60000; i++);// pausa de +/- 1 Segundo e organizar os números do resultado em colunas , facilitando a leituras : #include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include <locale.h> int main() { int lado1; int lado2; int hipotenusa; int soma_catetos; setlocale(LC_ALL, "portuguese"); for (lado1 = 1; lado1 <= 500; lado1++) { for (lado2 = 1; lado2 <= 500; lado2++) { for (hipotenusa = 1; hipotenusa <= 500; hipotenusa++) { soma_catetos = pow(lado1, 2) + pow(lado2, 2); if (soma_catetos == pow(hipotenusa, 2)) { printf("%3d²(%6d) + %3d²(%6d) = %3d²(%6d)\n", lado1 ,lado1*lado1, lado2,lado2*lado2, hipotenusa, hipotenusa*hipotenusa ); getch(); } } } } return 0; }
  4. @Gustavo Alves7 conforme explicado nesse link : https://pt.stackoverflow.com/questions/389799/É-possível-passar-um-vetor-como-parâmetro-no-visualg o vetor no visualG 3.0.6.5 é um tipo de estruturado e não pode ser passado como parâmetros , porém você pode criar uma função , que serve de subrotina sem enviar o vetor pois no visualG as variáveis usadas no bloco principal do compilador , que é tudo que esteja entre o "Inicio e o Fimalgoritmo" , precisam ser criadas lá no início do código na seção "Var" e portanto são globais e assim podem ser acessadas em qualquer local do código , e a subrotina / função fará a ordenação dos números e ao retornar poderão ser escritos . e seu código ficaria assim : Algoritmo "EXE4SUBROTINAS_02" Var Vet : Vetor[1..10] de Inteiro L, A, Aux, ret : Inteiro funcao sub_rotina(tam_vet : inteiro):inteiro Var A,L : inteiro Inicio Para L de 1 ate 9 Faca Para A de 1 ate 10 - L Faca Se Vet[A ] > Vet[A + 1] então Aux := Vet[A ] Vet[A ] := Vet[A + 1] Vet[A + 1] := aux FimSe FimPara FimPara retorne tam_vet Fimfuncao Inicio Para L := 1 ate 10 Faca Escreva("Digite um numero: ") Leia(Vet[L]) FimPara // passagem de parâmetro dos Tipos : Logico Real inteiro ou caractere ret <- sub_rotina(10) // enviou o num 10 como parAmetro para a FunCAo { // essa ordenaCAo será na funCAo Para L de 1 ate 9 Faca Para A de 1 ate 10 - L Faca Se (Vet[A] > Vet[A + 1]) então Aux := Vet[A] Vet[A] := Vet[A + 1] Vet[A + 1] := aux FimSe FimPara FimPara } // Aqui escreve os nUmeros que estarAo ordenados Escreval("") Escreval("Valor retornado da Função ",ret) // ret Eh o valor retornado Escreval("") Para L := 1 ate 10 Faca Escreva(Vet[L]) FimPara Escreval("") Fimalgoritmo
  5. @Pedro Martins25 nesse site da GigaByte https://www.gigabyte.com/br/Motherboard/H510M-H-V2-rev-10/sp#sp diz que essa placa suporta memórias de 3200mhz , porém se você misturar memórias de velocidades diferentes , será usadas com a de menor velocidade , então para conseguir os 3200 MHz precisam ser todas dessa mesma velocidade ., e pode usar um pente ou dois .
  6. @Druid pelo jeito isso é o seu antivirus que esteja disparando essas msg , vá em exceções e clique em permitir usar vs.
  7. @Pedro Vinicius G. C. essa é a versão mais recente , versão 3.0.7.0 (última de revisão 21/03/2019) release OK , conforme diz nesse link : https://sourceforge.net/projects/visualg30/ mas essa versão tem alguns "bug's" , e seria melhor usar o da versão anterior a essa , VISUALG 3.0.6.5 (revisão 65 em 28/02/2017) , e que está nesse link: https://antonionicolodi.blogspot.com/2015/06/visualg-30-revisao-4-em-25062015.html
  8. isso ainda não sabia , porém nesse caso será apenas um caractere que se perderia , e creio que você quis dizer que fgets pega o '\n' digitado pelo usuário se houver espaço na variável para guarda lo ali , e se não couber , a string vai ficar sem o '\n' e receberá o '\0' finalizando a string ?
  9. realmente essa variável "b" minúsculo : h1 = A; /// considera que A seja a hipotenuza if(B>A && B>C) /// B Eh o maior Lado ? { h1 = B; B = A; } else /// C Eh o maior Lado ? { /// if(C>A && C>b) if( C > A && C > B ) { h1 = C; C = A; } } não está nesse código , e sim o "B" maiúsculo , pois editei o código no próprio site e ficou assim , porém aqui no codeblocks não apresentou esses outros erros e warning's .
  10. @RafaelaRios é provável que esteja usando uma variável que recebe incremento e assim adiciona no outro pedido , e se você puder / Quiser , postar o código para podermos ver como está e em que possamos ajudar te .
  11. O enunciado diz para ler os lados de um triangulo retângulo e também mostrar a maior altura e também a área do triangulo , então imagino que o programa precisa detectar se o triângulo é retângulo e também a maior altura e a hipotenusa para assim fazer os cálculos , e também coloquei alguns controles para validar o que o usuário digitar na entrada dos dados , e o programa ficou assim : #include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <math.h> #include <time.h> #include <locale.h> int main(int argc, char* argv[] ) { srand(time(NULL)); setlocale(LC_ALL,"");// usar vIrgula para casas decimais int repetir = 0; int ret = 0; float area = 0.0; float A = 0.0; float B = 0.0; float C = 0.0; float c1 = 0.0; float c2 = 0.0; float h1 = 0.0; float h2 = 0.0; do { repetir = 0; printf("coloque vIrgula para separar casas decimais dos nUmeros" "Digite o tamanho do lado A do triangulo retangulo: "); ret = scanf("%f",&A); printf("val A = %.2f\nval retorno = %d\n",A,ret); if(ret != 1)return 0; printf("Digite o tamanho do lado B do triangulo retangulo: "); ret = scanf("%f",&B); printf("val B = %.2f\nval retorno = %d\n",B,ret); if(ret != 1)return 0; printf("Digite o tamanho do lado C do triangulo retangulo: "); ret = scanf("%f",&C); printf("val C = %.2f\nval retorno = %d\n",C,ret); if(ret != 1)return 0; /// ver qual eh a hipotenusa ? h1 = A; /// considera que A seja a hipotenuza if(B>A && B>C) /// B Eh o maior Lado ? { h1 = B; B = A; } else /// C Eh o maior Lado ? { if(C>A && C>b) { h1 = C; C = A; } } /// ver se o triangulo eh retAngulo c1 = B * B; c2 = C * C; h2 = h1 * h1; /// ver qual eh a maior altura A = B; if(C > A) A = C; if(h2 != c1 + c2 )/// se hipotenuza ao quadrado diferente da soma do quadrado dos catetos { printf("esse triangulo não eh retangulo.\n" "Hipotenuza %.2f diferente (B)² %.2f + (C)² %.2f = %.2f\n" ,h2,c1,c2,c1+c2); repetir = 1; } } while( repetir != 0);/// repete enquanto não for tringulo retangulo area = B * C / 2; /// calculando a Area do triAngulo printf("\nHipotenuza %.2f X %.2f -> %.2f IguaL %.2f => (B)%.2f + (C)%.2f\n" "\nEsse TrianGulo eh RetanguLo. \n\n" "A Maior Altura eh %.2f \n\n" "a Area do TrianguLo eh %.2f \n\n" ,h1,h1,h2, c1 + c2,c1, c2, A, area ); return 0; }
  12. @higor7 como disse @arfneto o erro é por que está lendo dois blocos e sendo que no "fwrite" gravou apenas um bloco de cada vez , e na função exibirContatosCadastrados coloque uma pausa ao final que pode ser a função "Sleep(3000);" ou outra de sua preferência , e seu código com algumas modificações ficou assim : #include <stdio.h> ///#include <conio.h> não eh biblioteca padrão da linguagem C #include <stdlib.h> #include <windows.h> #include <string.h> #define _h GetStdHandle(STD_INPUT_HANDLE) typedef struct { int sequencial; char nome [30]; char email [30]; ///long int telefone; /// esse nUmero gigante não servirAh para nada char telefone[15]; /// melhor que seja string } ContatoProfissional; ContatoProfissional Contato; int contSequencial = 1; /// var Global int menu (); void inserirContato (); void exibirContatosCadastrados(); void gettch (); int main () { int opcao = -1; do { system("cls"); opcao = menu(); printf("\n"); switch (opcao) { case 1: inserirContato(); break; case 2: exibirContatosCadastrados(); break; default: printf("OpCAo invAlida, digite novamente."); break; } } while (opcao != 0); } int menu() { int opcao = -1; printf ( " 0 - Sair.\n" " 1 - Inserir um contato.\n" " 2 - Exibir os contatos cadastrados.\n" " 3 - Alteracao de dados de um contato.\n" " 4 - Excluir um contato.\n" " 5 - Consultar os dados de um determinado contato.\n" " >> " ); scanf("%d", &opcao); return opcao; } void inserirContato() { FILE *arquivoContatos = fopen("contatos.dat", "ab"); if (arquivoContatos) { getchar(); printf("Digite o nome do contato: "); fgets(Contato.nome, 50, stdin); Contato.nome[strlen(Contato.nome)-1] = 0;/// remove o newLine pego por fgets printf("Digite o email: "); fgets(Contato.email, 30, stdin); Contato.email[strlen(Contato.email)-1] = 0;/// remove o newLine printf("Digite o telefone (00 90000 0000): "); ///scanf("%ld", &Contato.telefone);/// esse nUmero gigante não servirA para nada int ret = scanf("%s", Contato.telefone); /// melhor que seja string e essa funCAo não pega o newLine nem espaCo if(ret != 1)return; Contato.sequencial = contSequencial; contSequencial++; fwrite(&Contato, sizeof(Contato), 1, arquivoContatos); fclose(arquivoContatos); } else { printf("ERRO AO ABRIR O ARQUIVO.\n"); } } void exibirContatosCadastrados() { ContatoProfissional LerContatos; FILE *arquivoContatos = fopen("contatos.dat", "rb"); if (arquivoContatos) { while (fread(&LerContatos, sizeof(Contato), 1, arquivoContatos))/// apenas um Bloco de cada vez { printf ( "Nome ------: %s\n" "Email -----: %s\n" "Telefone --: %s\n" "Sequencia -: %d\n" "'----------------------------------'\n\n" ,LerContatos.nome , LerContatos.email , LerContatos.telefone, LerContatos.sequencial ); } fclose(arquivoContatos); } else { printf("ERRO AO ABRIR O ARQUIVO.\n"); } gettch(); ///Sleep(3000); pausa pelo tempo determinados } void gettch() /// pausa etherna até teclar algo { fprintf(stdout,"\tTecle !"); FlushConsoleInputBuffer(_h ); WaitForSingleObject(_h, INFINITE); }
  13. @Ansi C @Ansi C você tem razão, esse algoritmo poderia ser feito usando vetor , e com certeza ficaria muito bom , te agradeço pela dica, porém no enunciado não diz que precisa ser com vetor, e na época não observei que o usuário pensa no número , mas também digita tal número , e assim o computador sabe qual número o usuário pensou , e também se mentiu . E nesse código que postei ficaram invertidos os operadores lógicos ">=" e "<=" e faltou o "default:" no switch / case , e o código ficou assim nessa nova versão : #include <stdio.h> #include <windows.h> #include <time.h> #include <locale.h> /// did you mean => você quis dizer void adivinha( int ); int main(int argc, char* argv[] ) { srand(time(NULL)); setlocale(LC_ALL,""); int tentar_de_novo=1; do { printf("Pense e digite um número de 1 a 100\n"); scanf("%d",&numero); adivinha(); printf("Se você deseja jogar novamente digite um qualquer numero, se não digite 0\n"); scanf("%d",&tentar_de_novo); }while(tentar_de_novo); printf("\n\n\n"); return 0; } void adivinha( int numero ) { int aleatorio = 0 , ultimo = 100 , primeiro = 1 , tentativas = 0 ; char simbolomate = 0 ; do { aleatorio = primeiro + ( ultimo - primeiro ) / 2; tentativas++; printf ("O número que você escolheu é maior,menor ou igual a %d ?\n" "Digite '>', '<' ou '=' respectivamente \n" "Número de tentativas -----: %d \n",aleatorio,tentativas); scanf (" %c",& simbolomate); switch (simbolomate) { case '=': if(aleatorio != numero) printf("Mentiu !\n"); else printf("número correto"); break; case '>': if(aleatorio >= numero) printf("Mentiu !\n"); if(numero > aleatorio) primeiro = aleatorio + 1; break; case '<': if(aleatorio <= numero) printf("Mentiu !\n"); if(numero < aleatorio) ultimo = aleatorio - 1; break; default: printf("Opção inváLida . . . !\n"); } } while( aleatorio != numero || simbolomate != '=' ); }
  14. @Samuel Fortes Brasil as mensagens de erro emitidas pelo visualG não são exatas , mas apenas informa que tem um erro , e é o programador que precisa descobrir qual erro é , e geralmente é erro de sintaxe , como comandos escrito errado , grudado na palavra seguinte , e variáveis não criadas , então quando aparece essas msg é preciso verificar o código para descobrir o que está errado . o visualG é um bom compilador , pois usa os comandos em português , porém é bem simples e poucos recursos , é para iniciantes e não se pode exigir muito dele , e também ajuda quem está começando pois assim força o programador a descobrir como corrigir os erros , e o erro nesse seu código e como o @Ansi C lhe explicou , falta mesmo essa variável "MaiorNota" , então coloca lá no início como sendo do tipo "Real" , turma : Inteiro N1,N2,N3,N4,N5 : Inteiro Nota, MaiorNota : Real
  15. @Samuel Fortes Brasil o erro "esperava encontrar faca" e por que o enquanto está grudado no texto seguinte a ele e sem espaço , assim o compilador reconhece como sendo uma coisa só , e a informação que ele lança não é exata , pois o que faltava mesmo é o "enquanto" que está de fato escrito , mas mesmo para humanos essa escrita , "enquanto(valorInicial " , está errada, pois está tudo escrito junto . e uma forma de mostrar os números tanto seja de forma progressiva ou Regressiva , seria verificar os valores inicial e final e decidir de onde começar a escrever os números no intervalo , pois se o final for menor que o inicial , então fazer uma troca deles um pelo outro , e assim só usaria mesmo um loop ao invés de dois , Algoritmo "erro no enquanto_faca " Var valorInicial,valorFinal, auxiliar : inteiro contPersonalizada, contador, flg : Inteiro Inicio Escreval("----------------------------- ") Escreval(" CONTADOR INTELIGENTE ") Escreval("----------------------------- ") Escreva ("Qual o valor inicial da contagem? " ) Leia ( valorInicial ) Escreva ("Até quando o contador deverá contar? ") Leia ( valorFinal ) Escreval("----------------------------- ") Escreva ("Pretende fazer uma contagem ( normal ") Escreva ("ou regressiva) de quanto em quantos ") Escreval("números ? ") Escreval("Por exemplo: 1 + 2 ao invés de 1 + 1.") Escreva ("Resposta.: " ) Leia ( contPersonalizada ) contador <- valorInicial se valorInicial > valorFinal então contador <- valorInicial auxiliar := valorFinal valorFinal := valorinicial valorInicial := auxiliar flg <- 1 contPersonalizada <- contPersonalizada * -1 fimse Se valorInicial > 0 então Enquanto valorInicial <= valorFinal faca se flg <> 0 então valorInicial <- valorInicial + contPersonalizada * -1 senao valorInicial <- valorInicial + contPersonalizada fimse Escreval( contador ) contador <- contador + contPersonalizada FimEnquanto FimSe Fimalgoritmo
  16. @Samuel Fortes Brasil não são os parênteses que causam problemas , mas não são necessários nesse caso específico , pois ali tem apenas uma comparação , e se tivessem duas comparações , aí sim precisaria de colocar os parênteses , e o algoritmo está contando só até 14 por que foi isso que você indicou no código , ou seja para escrever o valor dessa variável "valorInicial" enquanto ela for MenorQue o valorFinal , e sendo que para escrever também o valorFinal precisa inclui-lo com o sinal de "=" junto ao "<" MenorQue , assim : Enquanto valorInicial <= valorFinal faca // vai atee enquanto o valor seja monor ou igual ao valorFinaL Escreval( valorInicial ) valorInicial <- valorInicial + contPersonalizada FimEnquanto
  17. @Samuel Fortes Brasil você postou no tópico de portugol , mas esse código é do VisualG , que é portugol, mas cuja sintaxe é diferente do portugol studio , e é nesse que se usa o '\n' para quebrar a linha , e no visualG seria assim : Escreva(/n"Vou pagar em quantas parcelas ?") // essa Linha Escreva("/nVou pagar em quantas parcelas ?") // quebrar a linha no Portugol Studio // e no VisualG seria assim : EscrevaL("Vou pagar em quantas parcelas ?")
  18. @jaireugenio desculpe , por esses comandos esquisitões , mas eles são comandos simples e não fazem nada demais não, apenas manipula som e cores no console, e aqui no codeblock's esse esboço de Algorítimo com essa estrutura e várias bibliotecas já é criado automáticamente ao iniciar um novo arquivo ou projeto, e na hora de postar não removi esses comandos , e nesse código eles poderiam ser excluídos e não afetaria em nada o funcionamento de seu código , e você disse que precisa encontrar 9 números , porém nesse novo código que postou , se na entrada for informado "9" , só mostrará "7" e sendo que para mostrar os 9 números precisa informar "43" logo na entrada , aqui seu código para apresentar também a Quantidade encontrada : #include <stdio.h> int main () { int n = 0, divisor = 0; size_t soma1 = 0, soma2 = 0; size_t y = 0, x = 0; size_t cont = 0, r = 0; printf("Encontrar Quantos nUmeros Amigos "); scanf("%d", &x); if( x > 3 ) y = x * 1500; else y = x * 1000; for (n = 2; n <= y; n++) { soma1 = 1; for (divisor = 2; divisor <= n/2; divisor++) { if (n % divisor == 0) soma1+=divisor; //calcula a soma dos divisores } soma2 = 1; if (soma1 != n) for (divisor = 2; divisor <= soma1/2; divisor++) { if (soma1 % divisor == 0) soma2 += divisor; //calcula a soma dos divisores } if (soma2 == n && n < soma1) //verificar se a soma dos divisores eh igual ao numero { cont += 1; printf(" %d -> (%7d,%7d)\n",cont, n, soma1); } } return 0; }
  19. @Ansi C obrigado , creio que você teve muito dificuldade para obter essa listas , pois já pesquisei bastante e não encontrei em nenhum lugar uma lista igual a essa , mas apenas informações sobre como adquirir um para de número amigos .
  20. @Thaianny Oliveira no primeiro código você está incrementando a variável que controla o loop for e assim vai pular de dois em dois , e lerá apenas cinco números , scanf("%i", &idade); /// count++; já incrementada pelo "for" e no segundo você colocou um loop "while" dentro do "for" sem necessidade , e se que apenas mostrar as idades maior ou igual a 18 então só precisa de uma comparação " if " , printf("Informe 10 idades para o sistema:\n"); for(int count=0; count<10; count++) { /// while(count<10) /// { printf("Informe a %d idade -: ",count+1); scanf("%i", &idade); /// count++; if ( idade >= 18 ) { printf("\n%i Idade -> %d\n\n",count+1, idade); } /// } } e outro modo mais elaborado seria usar um vetor para armazenar todas as idades com um loop "for" indo de zero até enquanto for menor que 10 , e depois outro loop para fazer a comparação e mostrar tais idades , e outra coisa também é que o mais comum é começar o loop em zero "0" pois na linguagem c os vetores se iniciam pela posição zero mesmo , apesar de que não terá erro se começar em " 1 " , mas se assim o fizer vai perder duas posições do vetor, a primeira e a última posição , pois essa última posição não estará reservada .
  21. @santicide você postou no tópico de C++ , mas esse código é todo da linguagem C , e então você vai fazer em Qual linguagem ? , e pode ser na linguagem C mesmo , então essa função sorteio_manual não funciona pois está em loop infinito , já que essa variável "i" que foi criada mas não foi inicializada e assim ela terá um valor aleatório qualquer , #define _WIN32_WINNT 0x600 #define _h GetStdHandle(STD_OUTPUT_HANDLE) #include <stdio.h> #include <conio.h> #include <iso646.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <windows.h> #include <math.h> #include <time.h> #include <stdbool.h> #include <locale.h> using namespace std; int sorteio_manual() { int i, /// var não inicializada , pode ter qq valor numeroSorteioM = 0, /// inicializa uma variAvel "int" numeroDigitadoM, verificaNumeroM, numeroJaDigitadoM, numerosM[6] = {0}; /// inicializando um vetor de "int" todos elementos zerados while(i < 6) /// só vai entrar nesse loop se i for menor que 6 { /// e só vai sair qundo "i" for maior Que zero printf("Val I= %d\n",i); /// para ver o valor da var "i" e essas funções são ineficazes pois não recenem nenhum argumento e nem retornam nada .
  22. @Eli Almeida o enunciado diz que é um tabuleiro "vazio" , então com certeza é o primeiro imagem porém para ter como informar as posições precisa numerar as linhas e colunas , ou números e letras ., assim :
  23. @Eli Almeida seu código está funcionando bem , porém não entendi o modo de jogar , pois parece que seja para apenas um jogador , ou talvez para dois jogadores humanos , sendo que cada um joga e espera o outro fazer a jogada dele , e se fosse para jogar contra o computador poderia colocar para que o computador escolhesse aleatoriamente uma das posições usando a função "randi" .
  24. @jaireugenio para esse código não repetir os mesmos números você pode colocar uma variável que armazena os números encontrados e assim evitar imprimi los novamente , porém não sei se esses números encontrados pelo programa são realmente números amigos , e com essa modificação seu código ficou assim : #define _WIN32_WINNT 0x600 #define _h GetStdHandle(STD_OUTPUT_HANDLE) #include <stdio.h> #include <conio.h> #include <iso646.h> #include <stdlib.h> #include <string.h> #include <windows.h> #include <math.h> #include <time.h> #include <stdbool.h> #include <locale.h> char cor( int, int ); int main(int argc, char* argv[] ) { srand(time(NULL)); int letra,fundo; CONSOLE_SCREEN_BUFFER_INFO _c ; if( GetConsoleScreenBufferInfo ( _h, & _c ) ) { letra = ( _c.wAttributes & 0xFF ) & 0x0F; fundo = ( ( _c.wAttributes & 0xFF ) >> 4 ) & 0x0F; } cor(12,14); setlocale(LC_ALL,""); ///------------------------------------------------------- int n, divisor, r, soma1, soma2, y, x; int flag = 0; scanf("%d", &x); if(x>3) { y=x*1500; } else y=x*1000; for (n = 2; n <= y; n++) { soma1 = 1; for (divisor = 2; divisor <= n/2; divisor++) { if (n % divisor == 0) soma1+=divisor; //calcula a soma dos divisores } soma2 = 1; if (soma1 != n) for (divisor = 2; divisor <= soma1/2; divisor++) { if (soma1 % divisor == 0) soma2+=divisor; //calcula a soma dos divisores } if (soma2 == n && flag != n) //verificar se a soma dos divisores eh igual ao numero { printf(" (%7d,%7d) \n",n, soma1); flag = soma1; /// armazena para q não repita esses mesmos num's } } for(int f=0; f<10; f++) Beep(rand()%3000,rand()%150+150); ///------------------------------------------------------- cor(letra,fundo); printf("\n\n\n"); return 0; } char cor( int L, int F ) { SetConsoleTextAttribute( _h, L +( F << 4 ) ); }
  25. @jaireugenio seu programa está em loop infinito , por que você colocou a condição de saida do while como "num1" igual a zero , e isso nunca acontece pois sempre que é zero recebe incremento . while(num1) /// repita enquanto for diferente de zero { while(num2) { if(amigo(num1,num2)==1) { f = num1; k = num2; printf("(%d,%d)",num1,num2); num1 = 0; /// num1 recebe valor zero num2 = 0; } num1++; /// incrementa, e assim nunca sairA desse Loop etherno } }

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!