Ir ao conteúdo

kgin

Membro Pleno
  • Posts

    386
  • Cadastrado em

  • Última visita

Tudo que kgin postou

  1. 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).
  2. 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.
  3. @Palagar Faltou você fechar o bloco principal com fimAlgoritmo
  4. 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!
  5. 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
  6. 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
  7. Declare outra variável do tipo inteiro e a cada pedido feito você adiciona mais 1 (um) a mesma.
  8. 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
      • 1
      • Obrigado
  9. 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); }
  10. @Á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/
  11. @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
  12. 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.
  13. kgin

    C# Trabalho jogo de futebol

    Poste o que você já fez, a linguagem de programação e o ambiente que você está usando.
  14. Utilize o botão code <> para postar no fórum! O compilador está reclamando que você está usando o operador de comparação "==" ao invés do de atribuição "=" Recomendo dar nomes mais significativos para as variáveis. e pegar a linha inteira com fgets e processar com o sscanf char buffer[256]; int numero = 0; fgets(buffer, 256, stdin); sscanf(buffer, "%i", &numero); Você também não colocou o índice dos vetores Era pra ser n[i] no primeiro e você deveria fazer outro loop no segundo.
  15. kgin

    C distinguir letras e digitos

    você pode usar as funções da biblioteca ctype.h para distinguir entre caractere (isalpha) ou números (isalnum) ou você pode comparar diretamente o caractere. Exemplo /* * Numero correspondente ao caractere */ #include <stdio.h> #define T_BUFFER 256 int main(void) { char caractere; char buffer[T_BUFFER]; do { printf("Digite \"@\" para encerrar o programa:"); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%c", &caractere); printf("%c e", caractere); if (caractere >= 'a' && caractere <= 'z') { printf(" uma letra do alfabeto minuscula\n"); } else if (caractere >= 'A' && caractere <= 'Z') { printf(" uma letra do alfabeto maiuscula\n"); } else if (caractere >= '0' && caractere <= '9') { printf(" um numeral\n"); } else { printf(" um caractere qualquer da tabela ascii\n"); } printf("e seu codigo correspondente na tabela ascii e:%d\n", caractere); printf("Pressione enter para continuar.\n"); fgets(buffer, T_BUFFER, stdin); } while (caractere != '@'); } versão online!
  16. @jorge.b Exemplo #include <stdio.h> #include <stdlib.h> #define T_BUFFER 256 int main(int q_arg, char *v_arg[]) { char buffer[T_BUFFER]; int n_atual = 0, n_anterior = 0; do { n_anterior = n_atual; printf("Digite o numero anteriormente digitado para encerrar\n>"); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%i", &n_atual); } while (n_atual != n_anterior); return(0); } Versão online!
  17. Você errou na sintaxe do if o correto seria if(resto[i] == 10){ printf("A"); } else if(resto[i] == 11){ printf("B"); } else if(resto[i] == 12){ printf("C"); } else if(resto[i] == 13){ printf("D"); } else if(resto[i] == 14){ printf("E"); } else if(resto[i] == 15){ printf("F"); } else { printf("%d",resto[i]); } Nessa parte também está errada Só vai criar um vetor de tamanho 0, em C não há vetores dinâmicos sem reservar memória para tal estrutura. O algoritmo funcionando #include <stdio.h> #include <stdlib.h> // Transforme um numero decimal em hexadecimal int main(){ int i=0; int resto[100]; int num; int depois; char buff[100]; printf("Digite um numero: \n"); fgets(buff, 100, stdin); sscanf(buff, "%d", &num); depois = num; while(num >= 16){ resto[i] = num % 16; num = num / 16; i++; } resto[i] = num; printf("\nO numero %d em hexadecimal eh: \n",depois); while(i>=0){ if(resto[i] == 10){ printf("A"); } else if(resto[i] == 11){ printf("B"); } else if(resto[i] == 12){ printf("C"); } else if(resto[i] == 13){ printf("D"); } else if(resto[i] == 14){ printf("E"); } else if(resto[i] == 15){ printf("F"); } else { printf("%d",resto[i]); } i--; } printf("\n\n"); fgets(buff, 100, stdin); // system("pause"); a piada já perdeu a graça :/ } versão online!
  18. O problema é porque você não está pegando a entrada (stdin) corretamente, o ideal seria você pegar a linha inteira e separar o que você quer e descartar o que não quer. Eu mexi um pouco para receber a entrada corretamente, mas ainda há várias coisas para consertar. #include <stdio.h> #include <string.h> #include <stdlib.h> #define T_ENTRADA 256 struct Produtos { char nome[60]; float precoCompra; float precoVenda; float lucro; }; float Lucro(float venda, float compra) { float lucro; lucro = venda - compra; lucro = (lucro / venda) * 100; return lucro; } int main() { struct Produtos produto[4] = {0}; /* Inicia o vetor inteiro com 0's */ int flag, aux = 0; int contlucro20 = 0, contlucro2030 = 0, contlucro30 = 0; int i; char entrada[T_ENTRADA] = {'\0'}; /* Inicia o vetor inteiro com 0's */ while (flag != 0) { //Cadastrando produtos: aux++; for(i = 0; i < aux; i++){ /* fflush(stdin); Ideia pessima! */ printf("\nProduto: "); fgets(entrada, T_ENTRADA, stdin); entrada[strlen(entrada)-1] = '\0'; strcpy(produto[i].nome, entrada); printf("\nPreco de Compra: "); fgets(entrada, T_ENTRADA, stdin); sscanf(entrada, "%f", &produto[i].precoCompra); printf("\nPreco de Venda: "); fgets(entrada, T_ENTRADA, stdin); sscanf(entrada, "%f", &produto[i].precoVenda); produto[i].lucro = Lucro(produto[i].precoVenda, produto[i].precoCompra); printf("\nLucro: %.2f%%", produto[i].lucro); if (produto[i].lucro < 20) { contlucro20++; } else if (20 >= produto[i].lucro && produto[i].lucro <= 30) { contlucro2030++; } else if(produto[i].lucro > 30) { contlucro30++; } printf("\nDigite 0 para encerrar ou 1 para continuar: "); fgets(entrada, T_ENTRADA, stdin); sscanf(entrada, "%d", &flag); if(flag == 0) { break; } } } //Imprimindo lista de produtos: printf("\nLista de produtos: \n"); for(i = 0; i < aux; i++) { printf("\nProduto: %s", produto[i].nome); printf("\nPreco de Compra: %.2f", produto[i].precoCompra); printf("\nPreco de Venda: %.2f", produto[i].precoVenda); printf("\nLucro: %.2f%%\n", produto[i].lucro); } printf("\nNumero de produtos com lucro menor que 20%%: %d", contlucro20); printf("\nNumero de produtos com lucro entre 20%% e 30%%: %d", contlucro2030); printf("\nNumero de produtos com lucro maior que 30%%: %d", contlucro30); return 0; }
  19. no vetor Acertos faltou colocar o "de" Errado! Acertos: vetor[1..3] real Certo! Acertos: vetor[1..3] de real Para postar código no fórum use o botão code <> Para pegar as respostas de cada pessoa você deveria usar uma matriz. Exemplo Algoritmo "semnome" const QUANTIDADE_ALUNOS = 3 QUANTIDADE_RESPOSTAS = 5 Var // Seção de Declarações das variáveis Gab, Resp : vetor[1..5] de caractere C : inteiro Nome: vetor[1..3] de caractere Acertos: vetor[1..3] de real contador1, contador2:inteiro gabarito_alunos:vetor [1..QUANTIDADE_ALUNOS, 1..QUANTIDADE_RESPOSTAS] de caractere Inicio // Seção de Comandos, procedimento, funções, operadores, etc... EscrevaL("--GABARITO DA PROVA--") Para C <- 1 ate 5 faca Escreva("Questão ",C ," : ") leia(Gab[C]) fimpara limpatela para contador1 <- 1 ate QUANTIDADE_ALUNOS faca // Pega o nome dos alunos escreval("Digite o nome do aluno") leia(nome[contador1]) // Pega o gabarito de cada prova para contador2 <- 1 ate QUANTIDADE_RESPOSTAS faca escreva("Questão ", contador2, " : ") leia(gabarito_alunos[contador1, contador2]) fimPara fimPara limpaTela // Mostra as respostas de cada aluno para contador1 <- 1 ate QUANTIDADE_ALUNOS faca escreval("Nome aluno:", nome[contador1]) escreval(" Gabarito da prova") para contador2 <- 1 ate QUANTIDADE_RESPOSTAS faca escreval("Questão ", contador2, ":", gabarito_alunos[contador1, contador2]) fimPara fimPara Fimalgoritmo
  20. @Vicaa Poste o que você já tentou fazer
  21. Se você não joga nenhum tipo de jogo, ou usa a suíte office da Microsoft. É seguro desinstalar tudo. Mas eu recomendo deixar o 2010 e o 2022 para ter uma certa compatibilidade com alguns programas.
  22. A pasta ordem de serviço vai ser criada automaticamente ou o batch vai ter que criá-la?
  23. Qual seria o seu compilador? porque você não pega a linha inteira com fgets()?
  24. Para criar interfaces gráficas em C você tem essas opções. IUP - Portable User Interface GTK Nuklear ImGui API do windows (nada recomendável por sinal) Fazer a sua própria
  25. @Dalmarg Sugiro você seguir as dicas do @arfneto e quebrar o algoritmo em partes. tente fazer primeiro a lista ligada e depois tentar implementar a leitura do arquivo. recomendo dar uma olhada no livro C completo e total no capitulo 20 pagina 550. Eu acho que com esse exemplo vai ficar mais claro /* * Trabalhando com arquivos em C. * 09/15/2022 ás 08:24p.m * Atualizado 09/16/2022 12:42p.m */ #include <stdio.h> #include <stdlib.h> #include <ctype.h> #include <string.h> #define NOME_ARQUIVO "teste.txt" #define TAMANHO_BUFFER 512 #define TAMANHO_PALAVRA 60 #define TAMANHO_LISTA 200 struct lista { char palavra[TAMANHO_PALAVRA]; int ocorrencias; }; void caixa_alta(char *str) { if (str != NULL) { int contador; for (contador = 0; contador < strlen(str); contador++) { str[contador] = toupper(str[contador]); } } } int main(int argc, char *argv[]) { struct lista lista_palavras[TAMANHO_LISTA] = {0}; int quantidade_palavras = 0; int contador; char buffer[TAMANHO_BUFFER] = {'\0'}; FILE *arquivo = fopen(NOME_ARQUIVO, "r+"); if (arquivo == NULL) { perror("não foi possível abrir o arquivo! "); exit(EXIT_FAILURE); } do { char *palavra = NULL; /* Pega uma linha do arquivo */ fgets(buffer, TAMANHO_BUFFER, arquivo); /* Separa em palavras */ palavra = strtok(buffer, " ;,._\n"); while (palavra != NULL) { /* * Critérios para se considerada uma palavra * -Ser pelo menos monossilábica * -Não pode conter espaços ou números no inicio */ if (isalpha(*palavra) && strlen(palavra) > 1) { int palavra_encontrada = 0; int posicao_palavra = 0; for (contador = 0; contador < quantidade_palavras && contador < TAMANHO_LISTA; contador++) { /* Salva as palavras temporariamente */ char tmp_palavra1[100] = {'\0'}; char tmp_palavra2[100] = {'\0'}; strcpy(tmp_palavra1, palavra); strcpy(tmp_palavra2, lista_palavras[contador].palavra); /* Passa as palavras para maiúsculas */ caixa_alta(tmp_palavra1); caixa_alta(tmp_palavra2); if (strcmp(tmp_palavra1, tmp_palavra2) == 0) { palavra_encontrada = 1; posicao_palavra = contador; break; } } if (palavra_encontrada) { lista_palavras[posicao_palavra].ocorrencias++; } else { strcpy(lista_palavras[quantidade_palavras].palavra, palavra); lista_palavras[quantidade_palavras].ocorrencias++; quantidade_palavras++; } } palavra = strtok(0, " ;,._\n"); /* Pega a próxima palavra */ } } while (!feof(arquivo) && !ferror(arquivo)); fclose(arquivo); printf("Quantidade de palavras encontradas no texto:%i\n", quantidade_palavras); printf("\tQuantidade de ocorrencias de cada palavra\n"); for (contador = 0; contador < quantidade_palavras; contador++) { printf("%s %i ", lista_palavras[contador].palavra, lista_palavras[contador].ocorrencias); if (lista_palavras[contador].ocorrencias > 1) { printf("vezes"); } else { printf("vez"); } putchar('\n'); } printf("Pressione enter para encerrar o programa...\n"); fgets(buffer, TAMANHO_BUFFER, stdin); return(0); } É apenas um exemplo, eu implementei usando um vetor. Versão online!

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!