Ir ao conteúdo
  • Cadastre-se

kgin

Membro Pleno
  • Posts

    380
  • Cadastrado em

  • Última visita

  1. Pode ser energia estática. Aço escovado, pvc, isopor e algumas madeiras (como peroba rosa, cedrinho e alguns tipos de mdf e mdp) podem guardar energia estatística, principalmente se estiverem perto de algum transformador. Coloque em cima de algum isolante na mesa e teste pra ver se é isso mesmo.
  2. Ele está indicando o erro na linha acima. o correto é para <variável> de <valor-inicial> ate <valor-limite> [passo <incremento>] faca falta a palavra de atribuição de no lugar de <- (comando de atribuição de variável) manual visualG
  3. Você poderia fazer assim /* Pega a quantidade de clientes */ do { printf("Quantos clientes deseja cadastrar?\n"); fgets(buffer_teclado, TAMANHO_BUFFER, stdin); sscanf(buffer_teclado, "%i", &numero_clientes); /* Checa se o primeiro caractere é uma letra do alfabeto * isalpha e uma função que pertence a biblioteca ctype */ if (isalpha(*buffer_teclado)) { printf("Entrada Invalida!\n"); } } while ((isalpha(*buffer_teclado) != 0) || (numero_clientes <= 0)); Checando toda vez se a entrada do teclado não começa com uma letra. Quando for postar no fórum utilize o botão code e poste todos os arquivos do programa. exemplo completo #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include "cliente.c" #define TAMANHO_BUFFER 256 int main(void) { char buffer_teclado[TAMANHO_BUFFER]; int numero_clientes = 0, contador; /* Pega a quantidade de clientes */ do { printf("Quantos clientes deseja cadastrar?\n"); fgets(buffer_teclado, TAMANHO_BUFFER, stdin); sscanf(buffer_teclado, "%i", &numero_clientes); /* Checa se o primeiro caractere é uma letra do alfabeto * isalpha e uma função que pertence a biblioteca ctype */ if (isalpha(*buffer_teclado)) { printf("Entrada Invalida!\n"); } } while ((isalpha(*buffer_teclado) != 0) || (numero_clientes <= 0)); //Alocação dinâmica do ponteiro clientes do tipo Cliente Cliente *clientes = malloc(sizeof(*clientes)*numero_clientes); for (int contador = 0; contador < n; contador++) { //Cadastro do nome do cliente printf("Informe o nome do cliente: "); fgets(buffer_teclado, TAMANHO_BUFFER, stdin); buffer_teclado[strlen(buffer_teclado)] = '\0'; strcpy(clientes[contador].nome, buffer_teclado); //Cadastro do enedereço do cliente printf("Informe o endereço do cliente: "); fgets(buffer_teclado, TAMANHO_BUFFER, stdin); buffer_teclado[strlen(buffer_teclado)] = '\0'; strcpy(clientes[contador].endereco, buffer_teclado); //Cadatro do código do cliente printf("informe o código do cliente: "); fgets(buffer_teclado, TAMANHO_BUFFER, stdin); sscanf(buffer_teclado, "%i", &clientes[contador].endereco); } atribuirDados(clientes, numero_clientes); //CRIAR FUNÇÃO QUE APAGA O ARQUIVO TXT free(clientes); //Esvaziamento da memória alocada pelo ponteiro clientes clientes = NULL; return(0); }
  4. @Capvaro O que você está tentando fazer exatamente? Seria melhor abrir outro tópico mais específico sobre o problema.
  5. Boa noite! O problema principal é que você declarou todos os tipos caractere como caractere e a outros problemas pontuais que tornam meio difícil consertar o algoritmo. recomendaria começar de novo e focar só no jogo em si por enquanto.
  6. Na hora que eu estava testando o programa eu fiz algumas modificações . Por isso não percebi o erro, mas o erro está na linha 50. Funcionando agora Algoritmo "CadastroAlunos" const // AQUI VOCÊ ALTERA A QUANTIDADE DE ALUNOS NO PROGRAMA AAAAAAAAAAH........ •`_´• QUANTIDADE_MAXIMA_ALUNOS = 2 Var opcao: Caractere RA: Vetor[1..QUANTIDADE_MAXIMA_ALUNOS] de Inteiro Nota1: Vetor[1..QUANTIDADE_MAXIMA_ALUNOS] de Real Nota2: Vetor[1..QUANTIDADE_MAXIMA_ALUNOS] de Real Cidade: Vetor[1..QUANTIDADE_MAXIMA_ALUNOS] de Caractere MEDIA: Vetor[1..QUANTIDADE_MAXIMA_ALUNOS] de Real contador: Inteiro raPesquisa: Inteiro encontrou: Logico alunosCadastrados: Logico procedimento espera var entrada:caractere inicio escreval("Pressione enter para continuar...") leia(entrada) fimProcedimento Inicio Para contador de 1 ate QUANTIDADE_MAXIMA_ALUNOS faca RA[contador] <- 0 Nota1[contador] <- 0 Nota2[contador] <- 0 MEDIA[contador] <- 0 FimPara alunosCadastrados <- Falso contador <- 1 Enquanto opcao <> "S" faca Escreval("==================================================") Escreval(" -=MENU=-") Escreval("1 - Cadastrar aluno") Escreval("2 - Pesquisar aluno") Escreval("3 - Listar alunos") Escreval("4 - Lista média de todos alunos da turma") Escreval("S - Sair") Escreval("==================================================") Escreval("Digite Opção: ") Leia(opcao) LimpaTela Escolha opcao Caso "1" // O ERRO ERA AQUI! // Cadastrar aluno // Enquanto (contador <= QUANTIDADE_MAXIMA_ALUNOS) E (RA[i] <> 0) faca // contador <- contador + 1 // FimEnquanto // FIM DO ERRO! Se contador <= QUANTIDADE_MAXIMA_ALUNOS então Escreva("Digite o RA do aluno: ") Leia(RA[contador]) Escreva("Digite a Nota 1 do aluno: ") Leia(Nota1[contador]) Escreva("Digite a Nota 2 do aluno: ") Leia(Nota2[contador]) Escreva("Digite a Cidade do aluno: ") Leia(Cidade[contador]) MEDIA[contador] <- (Nota1[contador] + Nota2[contador]) / 2 LimpaTela Escreval("Aluno cadastrado com sucesso!") contador <- contador+1 Senao Escreval("Limite de alunos atingido.") espera FimSe Caso "2" // Pesquisar aluno Se alunosCadastrados então Escreval("Digite o RA para pesquisa: ") Leia(raPesquisa) encontrou <- Falso Para contador de 1 ate QUANTIDADE_MAXIMA_ALUNOS faca Se RA[contador] = raPesquisa então LimpaTela Escreval("Média: ", MEDIA[contador]) encontrou <- Verdadeiro Interrompa FimSe FimPara Se não encontrou então Escreval("RA inexistente") FimSe Senao Escreval("Nenhum aluno cadastrado até o momento.") FimSe Caso "3" // Listar alunos Se alunosCadastrados então Para contador de 1 ate QUANTIDADE_MAXIMA_ALUNOS faca Se RA[contador] <> 0 então Escreval("RA: ", RA[contador]) Escreval("Nota 1: ", Nota1[contador]) Escreval("Nota 2: ", Nota2[contador]) Escreval("Média: ", MEDIA[contador]) Escreval("---------------------------------") FimSe FimPara Senao Escreval("Nenhum aluno cadastrado até o momento, consequentemente, nenhuma média calculada.") FimSe Caso "4" // Listar médias Se alunosCadastrados então Para contador de 1 ate QUANTIDADE_MAXIMA_ALUNOS faca Se RA[contador] <> 0 então Escreval("RA: ", RA[contador]) Escreval("Média: ", MEDIA[contador]) Escreval("---------------------------------") FimSe FimPara Senao Escreval("Nenhum aluno cadastrado até o momento.") FimSe Caso "S" Escreval("Agradecemos por utilizar o programa!") OutroCaso Escreval("Opção inválida. Tente novamente.") FimEscolha FimEnquanto FimAlgoritmo Tente reestruturar o programa, e evite usar variáveis com nomes pouco significativos como i ou ra acaba dificultando o entendimento do mesmo.
  7. Você tem que colocar para o programa parar nesse momento. Exemplo: Algoritmo "CadastroAlunos" Var opcao: Caractere RA: Vetor[1..10] de Inteiro Nota1: Vetor[1..10] de Real Nota2: Vetor[1..10] de Real Cidade: Vetor[1..10] de Caractere MEDIA: Vetor[1..10] de Real i: Inteiro raPesquisa: Inteiro encontrou: Logico alunosCadastrados: Logico procedimento espera var entrada:caractere inicio escreval("Pressione enter para continuar...") leia(entrada) fimProcedimento Inicio Para i de 1 ate 10 faca RA[i] <- 0 Nota1[i] <- 0 Nota2[i] <- 0 MEDIA[i] <- 0 FimPara alunosCadastrados <- Falso Enquanto opcao <> "S" faca Escreval("==================================================") Escreval(" -=MENU=-") Escreval("1 - Cadastrar aluno") Escreval("2 - Pesquisar aluno") Escreval("3 - Listar alunos") Escreval("4 - Lista média de todos alunos da turma") Escreval("S - Sair") Escreval("==================================================") Escreval("Digite Opção: ") Leia(opcao) LimpaTela Escolha opcao Caso "1" // Cadastrar aluno i <- 1 Enquanto (i <= 10) E (RA[i] <> 0) faca i <- i + 1 FimEnquanto Se i <= 10 então Escreva("Digite o RA do aluno: ") Leia(RA[i]) Escreva("Digite a Nota 1 do aluno: ") Leia(Nota1[i]) Escreva("Digite a Nota 2 do aluno: ") Leia(Nota2[i]) Escreva("Digite a Cidade do aluno: ") Leia(Cidade[i]) MEDIA[i] <- (Nota1[i] + Nota2[i]) / 2 LimpaTela Escreval("Aluno cadastrado com sucesso!") alunosCadastrados <- Verdadeiro Senao Escreval("Limite de alunos atingido.") espera FimSe Caso "2" // Pesquisar aluno Se alunosCadastrados então Escreval("Digite o RA para pesquisa: ") Leia(raPesquisa) encontrou <- Falso Para i de 1 ate 10 faca Se RA[i] = raPesquisa então LimpaTela Escreval("Média: ", MEDIA[i]) encontrou <- Verdadeiro Interrompa FimSe FimPara Se não encontrou então Escreval("RA inexistente") FimSe Senao Escreval("Nenhum aluno cadastrado até o momento.") FimSe Caso "3" // Listar alunos Se alunosCadastrados então Para i de 1 ate 10 faca Se RA[i] <> 0 então Escreval("RA: ", RA[i]) Escreval("Nota 1: ", Nota1[i]) Escreval("Nota 2: ", Nota2[i]) Escreval("Média: ", MEDIA[i]) Escreval("---------------------------------") FimSe FimPara Senao Escreval("Nenhum aluno cadastrado até o momento, consequentemente, nenhuma média calculada.") FimSe Caso "4" // Listar médias Se alunosCadastrados então Para i de 1 ate 10 faca Se RA[i] <> 0 então Escreval("RA: ", RA[i]) Escreval("Média: ", MEDIA[i]) Escreval("---------------------------------") FimSe FimPara Senao Escreval("Nenhum aluno cadastrado até o momento.") FimSe Caso "S" Escreval("Agradecemos por utilizar o programa!") OutroCaso Escreval("Opção inválida. Tente novamente.") FimEscolha FimEnquanto FimAlgoritmo Eu testei aqui e está tudo normal, mas esse erro aí seria na linha 43 no comando Leia(opcao) que estaria faltando ) um parênteses.
  8. Você errou na sintaxe do se..então No final teria que ter um fimSe, e eu recomendo não usar acentos nas palavras no visualG. Ele tem a tendência de buggar até com as próprias palavras reservadas. Outra melhoria seria usar a estrutura de decisão escolha ao invés do se...então. Exemplo: algoritmo "_" Var // Seção de Declarações das variáveis categoria: caractere tipoc: caractere diarias: inteiro vlr_diaria: real vlr_total: real desconto: real Inicio // Seção de Comandos, procedimento, funções, operadores, etc... escreval("Escolha a categoria do veículo (1, 2 ou 3): ") leia(categoria) escreval("Digite a qtd de diárias: ") leia(diarias) escolha categoria caso "1" vlr_diaria <- 299.99 escreval("Categoria: Popular") caso "2" vlr_diaria <- 399.99 escreval("Categoria: Hatch ou Sedan Intermediário") caso "3" vlr_diaria <- 499.99 escreval("Categoria: SUV ou Sedan Luxo") fimEscolha escreval("Tipo Categoria: ", tipoc) escreval("Qtd de diárias: ", diarias) escreval("Vlr da diária: R$ ", vlr_diaria) se diarias <= 6 então desconto <- 0 senao se diarias <= 14 então desconto <- 0.05 senao se diarias <= 30 então desconto <- 0.1 fimSe vlr_total <- diarias * vlr_diaria * (1 - desconto) escreval("Valor total do aluguel: R$ ", vlr_total) Fimalgoritmo
  9. Já tentou bloquear o programa no firewall do windows? como bloquear o acesso de internet a um programa.
  10. Pressione alt+enter para colocar em modo tela cheia. o programa não tem um modo maximizado! e ctrl+F10 para soltar o cursor do mouse. Seria melhor você baixar os dois separados. nesse link tem o turbo pascal 7
  11. @matheus.Matta testei aqui e funcionando "normal"! O replit funciona com uma maquina virtual linux, então você precisa de um ambiente igual ao replit para funcionar. a maioria das versões do gcc para o windows não ligam para a compatibilidade entre os sistemas, então seu problema seja esse. recomendo usar o tdm-gcc pelo fato de ser bem mais simples pra quem está iniciando.
  12. Creio eu que o ideal seria usar o seguinte comando /s /e /k /p /i Se a pasta não existir ele vai forçar para ser criada. O ideal seria usar o comando robocopy porque o xcopy coloca o arquivo todo na memória (até onde eu me lembro) antes de copiar. colocando o comando /Z você pode acompanhar o progresso do xcopy. XCOPY Microsoft learn
  13. Esta sim! Veja que no enunciado não pede para retornar nada Uma melhoria seria colocar algumas checagens de entrada para evitar informações duplicadas. Dessa maneira funcao produto_existe(nome:caractere):inteiro var contador:inteiro inicio retorne 0 para contador de 1 ate quantidade_produtos_cadastrados faca se nome = produtos[contador].nome então retorne contador interrompa fimSe fimPara fimFuncao procedimento cadastra_produto var opcao:caractere inicio repita escreva("Digite o nome do produto:") leia(p_temp.nome) se (produto_existe(p_temp.nome) > 0) então escreval("O produto ", p_temp.nome, " Já existe no cadastro!") escreval("Deseja continuar cadastrando outro?") escreva("[S/N]:") leia(opcao) se (opcao <> "s") então interrompa fimSe fimSE ate não ((produto_existe(p_temp.nome) > 0) e (opcao = "s")) fimProcedimento Fiz de cabeça e provavelmente nem funciona :b
  14. Eu acho que você deveria usar registros, veja nesse trecho do enunciado então nessa parte do seu código Var nomesProdutos : vetor [1..2] de caractere precosProdutos : vetor [1..2] de real estoqueProdutos : vetor [1..2] de inteiro produtosNaoCadastrados : logico Deveria ser algo assim const QUANTIDADE_MAXIMA_PRODUTOS = 100 tipo t_produto = registro nome:caractere preco:real estoque:inteiro fimRegistro integer = inteiro var produtos: vetor [1..QUANTIDADE_MAXIMA_PRODUTOS] de t_produto quantidade_produtos_cadastrados:inteiro isso é um recurso pouco documentado do visualG, então eu sugiro você ler esse livro de pascal para entender melhor o funcionamento (pagina 105 - Registros).
  15. Não porque você tem que especificar qual é a primeira posição do vetor, mas essa lógica é valida em C e C++ pelo fato da primeira posição do vetor ser sempre a posição "0". exemplo em C #include <stdio.h> #define TAMANHO_STR 30 enum tipos_frutas { TF_ABACAXI = 0, TF_BANANA, TF_CEREJA, TF_DAMASCO, TF_EMBUABA, TF_QUANTIDADE_FRUTAS }; int main(void) { char buffer[256]; /* Utilizado para pegar a entrada padrão! */ int contador; /* Declara e inicia a matriz */ char nome_frutas[TF_QUANTIDADE_FRUTAS][TAMANHO_STR] = { "Abacaxi", "Banana", "Cereja", "Damasco", "Embuaba" }; /* Mostra o nome das frutas */ for (contador = 0; contador < TF_QUANTIDADE_FRUTAS; contador++) { printf("[%i]-%s\n", contador, nome_frutas[contador]); } /* Salta uma linha */ printf("\n"); /* Mostra a primeira e a ultima fruta */ printf("A primeira fruta e %s\n", nome_frutas[TF_ABACAXI]); printf("A ultima fruta e %s\n", nome_frutas[TF_EMBUABA]); /* Pausa o programa */ printf("Pressione enter para continuar!\n"); fgets(buffer, 256, stdin); return(0); } Experimente online! Você poderia contornar isso declarando a primeira posição do vetor e a ultima. Exemplo Algoritmo "Tipos_de_fruta" const QF_INICIO = 1 QF_FIM = 5 var nome_frutas: vetor [QF_INICIO..QF_FIM] de caractere contador:inteiro inicio // Inicia o vetor! nome_frutas[1] <- "Abacaxi" nome_frutas[2] <- "Banana" nome_frutas[3] <- "Cereja" nome_frutas[4] <- "Damasco" nome_frutas[5] <- "Embauba" // Mostra o nome das frutas limpaTela escreval("Nomes das frutas no sistema!") para contador de QF_INICIO ate QF_FIM faca escreval("[", contador, "]-", nome_frutas[contador]) fimPara fimAlgoritmo Em pascal (a linguagem pai do visualG) isso é uma declaração bem útil, mas no visualG não tem muito sentido fazer isso pelo fato da linguagem ser bem mais limitada.

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...