kgin
Membro Pleno-
Posts
380 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que kgin postou
-
Notebook lento quando está em cima da mesa
kgin respondeu ao tópico de José Victor Gomes em Notebooks
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. -
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
-
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); }
-
@Capvaro O que você está tentando fazer exatamente? Seria melhor abrir outro tópico mais específico sobre o problema.
-
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.
-
VisualG Calcular média escolar, cadastro e pesquisa de aluno
kgin respondeu ao tópico de HenriqueArisi em Programação - iniciantes
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. -
VisualG Calcular média escolar, cadastro e pesquisa de aluno
kgin respondeu ao tópico de HenriqueArisi em Programação - iniciantes
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. -
VisualG Procedimentos no VisualG... Mensagem de sintaxe incorreta
kgin respondeu ao tópico de dmoret em Programação - iniciantes
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 -
Já tentou bloquear o programa no firewall do windows? como bloquear o acesso de internet a um programa.
-
Pascal como usar o Turbo PascaL com DOSBOX
kgin respondeu ao tópico de devair1010 em Programação - outros
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 -
@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.
-
Bat Como copiar todo o conteúdo de um disco para uma pasta de outro disco no MS DOS
kgin respondeu ao tópico de carcleo1999 em Programação - outros
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 -
VisualG Cadastro de produtos, consulta de estoques usando vetores
kgin respondeu ao tópico de Eli Almeida em Programação - iniciantes
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 -
VisualG Cadastro de produtos, consulta de estoques usando vetores
kgin respondeu ao tópico de Eli Almeida em Programação - iniciantes
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). -
VisualG É possível definir o tamanho do vetor utilizando constante em portugol?
kgin respondeu ao tópico de Eli Almeida em Programação - iniciantes
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. -
VisualG Pseudocódigo com função Se dando erro no visualg
kgin respondeu ao tópico de Palagar em Programação - iniciantes
-
VisualG É possível definir o tamanho do vetor utilizando constante em portugol?
kgin respondeu ao tópico de Eli Almeida em Programação - iniciantes
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! -
VisualG Como colocar Vetores Dentro de Função?
kgin respondeu ao tópico de Caiomqc em Programação - iniciantes
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 -
VisualG Calculadora trigonométrica, condicionais "OU" não funciona
kgin respondeu ao tópico de João Lucas Gomes de Moura em Programação - iniciantes
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 -
VisualG Cardápio para restaurante trabalho
kgin respondeu ao tópico de Luiz Fellipe Nesrala em Programação - iniciantes
Declare outra variável do tipo inteiro e a cada pedido feito você adiciona mais 1 (um) a mesma. -
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
-
C Por que não aparece o til na palavra corretamente ?
kgin respondeu ao tópico de Eli Almeida em C/C#/C++
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); } -
Portugol no portugol studio, como faço isso?
kgin respondeu ao tópico de Álvaro Dínamo em Programação - iniciantes
@Á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/ -
Bat tem como fazer uma loading bar no .bat?
kgin respondeu ao tópico de rieidi_gamer em Programação - outros
@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 -
Portugol Portugol studio, simplificando código
kgin respondeu ao tópico de Álvaro Dínamo em Programação - iniciantes
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