Ir ao conteúdo
  • Cadastre-se

kgin

Membro Pleno
  • Posts

    380
  • Cadastrado em

  • Última visita

Tudo que kgin postou

  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.
  16. @Palagar Faltou você fechar o bloco principal com fimAlgoritmo
  17. Algoritmo "Tipos_de_fruta" const QUANTIDADE_FRUTAS = 5 var nome_frutas: vetor [1..QUANTIDADE_FRUTAS] 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 1 ate QUANTIDADE_FRUTAS faca escreval("[", contador, "]-", nome_frutas[contador]) fimPara fimAlgoritmo Consulte o manual para mais detalhes!
  18. Ficaria mais fácil usando vetores exemplo algoritmo "reserva_lugares" const QUANTIDADE_LINHAS = 10 QUANTIDADE_COLUNAS = 10 LUGAR_VAZIO = 0 LUGAR_RESERVADO = 1 var lugares: vetor [1..QUANTIDADE_LINHAS, 1..QUANTIDADE_COLUNAS] de inteiro btecla: caractere fileira: caractere cadeira: inteiro procedimento limpa_lugares var linhas, colunas:inteiro inicio para linhas de 1 ate QUANTIDADE_LINHAS faca para colunas de 1 ate QUANTIDADE_COLUNAS faca lugares[linhas, colunas] <- LUGAR_VAZIO fimPara fimPara fimProcedimento procedimento mostra_lugares var linhas, colunas:inteiro inicio escreva("-") para colunas de 1 ate QUANTIDADE_COLUNAS faca se colunas < QUANTIDADE_COLUNAS então escreva(colunas) seNao escreval(colunas) fimSe fimPara para linhas de 1 ate QUANTIDADE_LINHAS faca escreva(carac(asc("A")+(linhas-1))) escreva(" |") para colunas de 1 ate QUANTIDADE_COLUNAS faca se lugares[linhas, colunas] = LUGAR_VAZIO então se colunas < QUANTIDADE_COLUNAS então escreva("-|") seNao escreva("-") fimSe seNao se colunas < QUANTIDADE_COLUNAS então escreva("B|") seNao escreva("B") fimSe fimSe fimPara escreval("|") fimPara fimProcedimento inicio limpa_lugares limpaTela mostra_lugares escreval("Digite a fileira desejada") leia(fileira) escreval("Digite a cadeira desejada") leia(cadeira) lugares[(asc(maiusc(fileira))-asc("A"))+1, cadeira] <- LUGAR_RESERVADO mostra_lugares fimAlgoritmo
  19. A lógica para o visualg nessa sentença está errada. Você teria que comparar a variável com todas as letras. mais ou menos dessa maneira // Estou negando a sentença para ela ser verdadeira Se (não (operacao = "S") OU (operacao = "C") OU (operacao = "T")) então No visualg quando você for usar operadores lógicos (não, E ou OU) você tem que proteger as operações de desigualdade (<, <=, >=, >, =, <>) desta maneira // Correto! se ((valor >= 1) E (valor <= 3)) então se você colocar dessa maneira vai esta errado // Errado! se valor >= 1 E valor <= 3 então Não vai funcionar. Seu algoritmo funcionando algoritmo "Perguntando se quer tan, cos ou sen" // Função : Criar uma espécie de calculadora trigonométrica // Autor : João Lucas Gomes de Moura, modificador por KGIN! // Data : 15/07/2023 var operacao:caractere valor, resposta:real inicio Escreval("Bem vindo a calculadora trigonométrica!") Escreval("Escolha uma função: S para Seno, C para Cosseno, e T para Tangente") Leia(operacao) Se (operacao = "S") então Escreval("Escreva um número para calcularmos o Seno:") Leia(valor) resposta <- Sen(valor) Escreval("O seno de ", valor, " é igual a ", resposta) Escreva("Obrigado pela preferência!") Fimse Se (operacao = "C") então Escreval("Escreva um número para calcularmos o Cosseno:") Leia(valor) resposta <- Cos(valor) Escreval("O Cosseno de ", valor, " é igual a ", resposta) Escreva("Obrigado pela preferência!") Fimse Se (operacao = "T") então Escreval("Escreva um número para calcularmos a Tangente:") Leia(valor) resposta <- Tan(valor) EscrevaL("A Tangente de ", valor, " é igual a ", resposta) Escreva("Obrigado pela preferência!") Fimse Se (não (operacao = "S") OU (operacao = "C") OU (operacao = "T")) então Escreva("É para escolher uma das letras acima bobo. Executa essa ***** de novo!") Fimse fimalgoritmo Outra dica é tente dar nomes mais significativos para as variáveis. uma variável com o nome valor e muito mais significativa do que usar uma letra solta como V ou F. e tente escrever mais em torno dos dados que o usuário vai fornecer, veja que o seu algoritmo é só um copia e cola. isso não é uma coisa ruim as vezes. Veja que muitas partes davam para ser reutilizadas algoritmo "Otimização maxima!" var NOME_OPERACOES: vetor [1..3] de caractere operacao, contador:inteiro valor:real inicio // Define o nome das operações NOME_OPERACOES[1] <- "Seno" NOME_OPERACOES[2] <- "Cosseno" NOME_OPERACOES[3] <- "Tangente" // Mensagem de boas vindas! escreval("Bem vindo a calculadora trigonometrica!") // Loop principal.... repita // Pega o tipo de operação escreval("Escolha uma das operações a baixo") para contador de 1 ate 3 faca escreval(contador ," para ", NOME_OPERACOES[contador]) fimPara escreval(" 0 para sair!") leia(operacao) // Pega o valor para a operação se ((operacao >= 1) e (operacao <=3)) então escreval escreva("Escreva um numero para calcularmos ") se (operacao <= 2) então escreva("o ", NOME_OPERACOES[operacao], ":") seNao escreva("a ", NOME_OPERACOES[operacao], ":") fimSe leia(valor) // Faz a operação escreval se (operacao <= 2) então escreva("O ", NOME_OPERACOES[operacao]) seNao escreva("A ", NOME_OPERACOES[operacao]) fimSe escreva(" de ", valor," e igual a ") escolha operacao caso 1 escreval(sen(valor)) caso 2 escreval(cos(valor)) caso 3 escreval(tan(valor)) fimEscolha escreval("Pressione enter para continuar") leia(contador) // Reutilizei :b fimSe limpaTela ate operacao = 0 fimAlgoritmo
  20. Declare outra variável do tipo inteiro e a cada pedido feito você adiciona mais 1 (um) a mesma.
  21. Comecei esse algoritmo como um exemplo, mas na hora que vi estava grande demais para tal proposito. Deixo como exercício para quem está começando. algoritmo "Restaurante" const // Constantes do programa CATEGORIA_LANCHES = 1 CATEGORIA_BEBIDAS = 2 CATEGORIA_ACOMPANHAMENTOS = 3 CATEGORIA_QUANTIDADE_MAXIMA = 3 QUANTIDADE_MAXIMA_PRODUTOS = 20 QUANTIDADE_MAXIMA_PEDIDOS = 50 tipo informacao_produto=registro nome:caractere preco:real fimRegistro informacao_pedido=registro categoria:inteiro produto:inteiro quantidade:inteiro fimRegistro var contador:inteiro // Vetor que vai guardar todos os produtos do restaurante NOMES_CATEGORIAS: vetor[1..CATEGORIA_QUANTIDADE_MAXIMA] de caractere PRODUTOS: vetor[1..CATEGORIA_QUANTIDADE_MAXIMA, 1..QUANTIDADE_MAXIMA_PRODUTOS] de informacao_produto QUANTIDADE_PRODUTOS: vetor[1..CATEGORIA_QUANTIDADE_MAXIMA] de inteiro pedidos_usuario: vetor[1..QUANTIDADE_MAXIMA_PEDIDOS] de informacao_pedido total_pedidos:inteiro opcao:inteiro procedimento p_programa var tmp:caractere inicio escreval("Pressione enter para continuar...") leia(tmp) fimProcedimento procedimento barra_simples(laterais, meio:caractere; tamanho:inteiro) var contador:inteiro inicio escreva(laterais) para contador de 1 ate tamanho-2 faca escreva(meio) fimPara escreva(laterais) fimProcedimento procedimento banner(str, laterais, meio:caractere; tamanho:inteiro) var tamanho_restante:inteiro contador:inteiro inicio tamanho_restante <- int(((tamanho-2)-compr(str))/2) escreva(laterais) para contador de 1 ate tamanho_restante faca escreva(meio) fimPara escreva(str) para contador de 1 ate tamanho_restante faca escreva(meio) fimPara escreva(laterais) fimProcedimento procedimento mostra_produto(categoria, produto:inteiro) var tamanho_restante:inteiro contador:inteiro inicio tamanho_restante <- 30-compr(PRODUTOS[categoria, produto].nome) escreva(PRODUTOS[categoria, produto].nome) barra_simples(".", ".", tamanho_restante) escreva(":", PRODUTOS[categoria, produto].preco:2:2) fimProcedimento procedimento menu_produtos(categoria:inteiro) var contador:inteiro opcao:inteiro quantidade_pedido:inteiro decisao_pedido:caractere achou_pedido:logico inicio repita limpaTela banner(NOMES_CATEGORIAS[categoria], "+", "=", 40) escreval para contador de 1 ate QUANTIDADE_PRODUTOS[categoria] faca escreva(contador, "-") mostra_produto(categoria, contador) escreval fimPara escreval(" 0-Para retornar ao menu anterior") escreval escreval("Digite uma das opções a cima") escreval("para incluir no pedido") barra_simples("+", "-", 40) escreval leia(opcao) se opcao <> 0 então se (opcao > 0) e (opcao <= QUANTIDADE_PRODUTOS[categoria]) então repita escreva("Informe a quantidade desejada:") leia(quantidade_pedido) se quantidade_pedido <= 0 então escreval("Informe uma quantidade valida!") fimSe ate não (quantidade_pedido <= 0) achou_pedido <- falso para contador de 1 ate total_pedidos faca se (pedidos_usuario[contador].categoria = categoria) e (pedidos_usuario[contador].produto = opcao) então escreval("voce ja fez esse pedido anteriormente!") escreval("Deseja acrecentar no pedido anterior?") escreva("[S/N]:") leia(decisao_pedido) se maiusc(decisao_pedido) = "S" então pedidos_usuario[contador].quantidade <- pedidos_usuario[contador].quantidade+quantidade_pedido fimSe achou_pedido <- verdadeiro interrompa fimSe fimPara se (achou_pedido = falso) e (total_pedidos < QUANTIDADE_MAXIMA_PEDIDOS) então total_pedidos <- total_pedidos+1 pedidos_usuario[total_pedidos].categoria <- categoria pedidos_usuario[total_pedidos].produto <- opcao pedidos_usuario[total_pedidos].quantidade <- quantidade_pedido fimSe seNao escreval("Opcao invalida!") p_programa fimSe fimSe ate opcao = 0 fimProcedimento procedimento mostra_pedidos var contador:inteiro valor_total:real inicio limpaTela banner("Registro De Pedidos", "!", "+", 40) escreval para contador de 1 ate total_pedidos faca mostra_produto(pedidos_usuario[contador].categoria, pedidos_usuario[contador].produto) escreval("X", pedidos_usuario[contador].quantidade, "=", pedidos_usuario[contador].quantidade*PRODUTOS[pedidos_usuario[contador].categoria, pedidos_usuario[contador].produto].preco:2:2) valor_total <- valor_total+pedidos_usuario[contador].quantidade*PRODUTOS[pedidos_usuario[contador].categoria, pedidos_usuario[contador].produto].preco fimPara escreval("Valor total da conta:", valor_total:2:2) escreval("Total de pedidos:", total_pedidos) fimProcedimento procedimento inicia_produtos_lanches inicio NOMES_CATEGORIAS[CATEGORIA_LANCHES] <- "Lanches" PRODUTOS[CATEGORIA_LANCHES, 1].nome <- "X EGG" PRODUTOS[CATEGORIA_LANCHES, 1].preco <- 10.00 PRODUTOS[CATEGORIA_LANCHES, 2].nome <- "X EGG Especial" PRODUTOS[CATEGORIA_LANCHES, 2].preco <- 12.00 PRODUTOS[CATEGORIA_LANCHES, 3].nome <- "X Bacon" PRODUTOS[CATEGORIA_LANCHES, 3].preco <- 14.00 PRODUTOS[CATEGORIA_LANCHES, 4].nome <- "X Bacon Especial" PRODUTOS[CATEGORIA_LANCHES, 4].preco <- 18.00 PRODUTOS[CATEGORIA_LANCHES, 5].nome <- "X Dog" PRODUTOS[CATEGORIA_LANCHES, 5].preco <- 10.00 PRODUTOS[CATEGORIA_LANCHES, 6].nome <- "X Dog Especial" PRODUTOS[CATEGORIA_LANCHES, 6].preco <- 14.00 PRODUTOS[CATEGORIA_LANCHES, 7].nome <- "Fantasminha" PRODUTOS[CATEGORIA_LANCHES, 7].preco <- 11.00 QUANTIDADE_PRODUTOS[CATEGORIA_LANCHES] <- 7 fimProcedimento procedimento inicia_produtos_bebidas inicio NOMES_CATEGORIAS[CATEGORIA_BEBIDAS] <- "Bebidas" PRODUTOS[CATEGORIA_BEBIDAS, 1].nome <- "Guarana jesus" PRODUTOS[CATEGORIA_BEBIDAS, 1].preco <- 9.99 PRODUTOS[CATEGORIA_BEBIDAS, 2].nome <- "Mineirinho" PRODUTOS[CATEGORIA_BEBIDAS, 2].preco <- 4.65 PRODUTOS[CATEGORIA_BEBIDAS, 3].nome <- "Korona extra" PRODUTOS[CATEGORIA_BEBIDAS, 3].preco <- 6.99 PRODUTOS[CATEGORIA_BEBIDAS, 4].nome <- "Agua minelau com gas" PRODUTOS[CATEGORIA_BEBIDAS, 4].preco <- 3.50 PRODUTOS[CATEGORIA_BEBIDAS, 5].nome <- "Agua minelau sem gas" PRODUTOS[CATEGORIA_BEBIDAS, 5].preco <- 1.99 PRODUTOS[CATEGORIA_BEBIDAS, 6].nome <- "Vinho tinto" PRODUTOS[CATEGORIA_BEBIDAS, 6].preco <- 19.90 PRODUTOS[CATEGORIA_BEBIDAS, 7].nome <- "Suco de laranja natural" PRODUTOS[CATEGORIA_BEBIDAS, 7].preco <- 4.99 QUANTIDADE_PRODUTOS[CATEGORIA_BEBIDAS] <- 7 fimProcedimento procedimento inicia_produtos_acompanhamentos inicio NOMES_CATEGORIAS[CATEGORIA_ACOMPANHAMENTOS] <- "Acompanhamentos" PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 1].nome <- "Batata Rustica" PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 1].preco <- 8.00 PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 2].nome <- "Onion Rings" PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 2].preco <- 12.50 PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 3].nome <- "Bacon Em Tiras" PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 3].preco <- 14.00 PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 4].nome <- "Frango Frito" PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 4].preco <- 9.00 PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 5].nome <- "Batata Frita" PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 5].preco <- 10.00 PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 6].nome <- "Bolinho De Arroz" PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 6].preco <- 5.00 PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 7].nome <- "Almondegas Ao Molho" PRODUTOS[CATEGORIA_ACOMPANHAMENTOS, 7].preco <- 13.00 QUANTIDADE_PRODUTOS[CATEGORIA_ACOMPANHAMENTOS] <- 7 fimProcedimento inicio // Inicia os produtos dos menus inicia_produtos_lanches inicia_produtos_bebidas inicia_produtos_acompanhamentos repita limpaTela barra_simples("+", "=", 70) escreval escreval(" ______ __ __ ______ ______ ______ ______ ______ ") escreval("/\ __ \ /\ \_\ \ /\ ___\ /\ __ \ /\ == \ /\ __ \ /\ == \ ") escreval("\ \ \/\ \\ \ __ \ \ \___ \\ \ __ \\ \ __< \ \ \/\ \\ \ __< ") escreval(" \ \_____\\ \_\ \_\ \/\_____\\ \_\ \_\\ \_____\\ \_____\\ \_\ \_\ ") escreval(" \/_____/ \/_/\/_/ \/_____/ \/_/\/_/ \/_____/ \/_____/ \/_/ /_/ ") barra_simples("+", "=", 70) escreval para contador de 1 ate CATEGORIA_QUANTIDADE_MAXIMA faca escreval(contador, "-", NOMES_CATEGORIAS[contador]) fimPara escreval("0-Para encerrar o programa") escreval("Digite uma das opções a cima") banner("Monte o seu pedido!", "+", "=", 40) escreval leia(opcao) se (opcao <> 0) então se (opcao > 0) e (opcao <= CATEGORIA_QUANTIDADE_MAXIMA) então menu_produtos(opcao) seNao escreval("Opcao invalida!") p_programa fimSe fimSe ate opcao = 0 mostra_pedidos fimAlgoritmo
  22. se você compilou e não funcionou o porque geralmente é o windows. O locale e dependente do sistema e das configurações do sistema. veja que linux ele vai funcionar, mas vai funcionar porque o linux esta configurado para utf-8 o terminal por padrão. exemplo linux #include <stdio.h> #include <stdlib.h> #include <locale.h> #define TAMANHO_BUFFER 256 void p_pausa(void) { char buffer_entrada[TAMANHO_BUFFER]; printf("Pressione enter para continuar.\n"); fgets(buffer_entrada, TAMANHO_BUFFER-1, stdin); } int main(void) { char buffer_entrada[TAMANHO_BUFFER]; setlocale(LC_ALL, ""); printf("Digite o seu nome:"); fgets(buffer_entrada, TAMANHO_BUFFER-1, stdin); printf("O nome digitado é: %s\n", buffer_entrada); p_pausa(); return(0); }
  23. @Álvaro Dínamo coloque o caractere de nova linha \n Para mais explicações vejo o manual na parte de entrada e saída https://dgadelha.github.io/Portugol-Webstudio/
  24. @rieidi_gamer Se vai mudar para c++ de uma olhada no meu código #include <stdio.h> #include <stdlib.h> #include <unistd.h> #define TAMANHO_BUFFER 256 #define TAMANHO_BARRA 60 void barra_progresso(int progresso, char adorno); int extrai_progresso(int valor_atual, int valor_total); void barra_comum(int tamanho_barra, char adorno, char meio); void pausa_msg(char *msg); int main(void) { int contador; for (contador = 0; contador < 400; contador++) { barra_progresso(extrai_progresso(contador, 400), '>'); usleep(10000); } return(0); } void barra_progresso(int progresso, char adorno) { int progresso_atua = (progresso*TAMANHO_BARRA)/100; int progresso_falta = TAMANHO_BARRA-progresso_atua; int contador; printf("\r["); for (contador = 0; contador < progresso_atua; contador++) { printf("%c", adorno); } for (contador = 0; contador < progresso_falta; contador++) { printf(" "); } printf("]-%i%%", progresso); fflush(stdout); } int extrai_progresso(int valor_atual, int valor_total) { return(((valor_atual+1)*100)/valor_total); } void barra_comum(int tamanho_barra, char adorno, char meio) { int contador; putchar(adorno); for (contador = 0; contador < tamanho_barra; contador++) { putchar(meio); } printf("%c\n", adorno); } void pausa_msg(char *msg) { char buffer[TAMANHO_BUFFER]; if (msg != NULL) { puts(msg); } puts("Pressione enter para continuar..."); fgets(buffer, TAMANHO_BUFFER, stdin); } versão online! Isso é apenas um recorte desse código. apaga_arquivos.zip Era só um teste e não funciona
  25. Seria interessante você colocar o enunciado. Você pode fazer dessa maneira para adicionar vetores programa { funcao inicio() { // Constante com o tamanho do vetor const inteiro QUANTIDADE_RESPOSTAS = 7 // Constante que especifica a resposta correta const inteiro RESPOSTA_ESPERADA = 0 // Varivel que vai guardar a resposta do usuario cadeia resposta // Um vetor de constantes que guarda todas as respostas validas do programa const cadeia respostas_validas[QUANTIDADE_RESPOSTAS] = { "what do you do?", "I work in marketing. how about you?", "I'm a student. i study german.", "my sister studies german, too!", "nice!", "what does your sister do?", "she works in a restaurant" } //Lição 19: Ela trabalha em marketing, página 5 escreva("\t\t\t\t========== Lição 19: Ela trabalha em marketing, página 5 ==========\n\n") faca { escreva("O que você faz?\n") leia(resposta) se (resposta == respostas_validas[RESPOSTA_ESPERADA]) { escreva("Resposta correta! Parabéns!\n") } senao { escreva("Resposta errada!\nPor favor tente novamente!\n") } } enquanto (resposta != respostas_validas[RESPOSTA_ESPERADA]) } } Recomendo ler essa pagina (Declaração de vetores) do manual do portugol studio.

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