×
Ir ao conteúdo
  • Cadastre-se

kgin

Membro Pleno
  • Posts

    314
  • Cadastrado em

  • Última visita

Reputação

257

3 Seguidores

Meu PC

  • Processador
    Motorola 68000
  • Placa de vídeo
    VDP Yamaha YM7101
  • Placa-mãe
    Sega MK-1631-16
  • Memória
    132 KB Hitachi
  • HDs
    8 MB texas instruments
  • Fonte
    Sega MK-1631-16
  • Monitor
    Semp toshiba STEREO mts 40 polegadas.
  1. Você pode fazer com vetores algoritmo "Padaria" const MAXIMO_PRODUTOS = 10 tipo tproduto=registro nome:caractere codigo:inteiro valor:real fimRegistro var produtos:vetor [1..MAXIMO_PRODUTOS] de tproduto pedidos:vetor [1..MAXIMO_PRODUTOS] de inteiro deveContinuarPerguntando:logico clienteConsumiuMais:caractere valor_total:real contador:inteiro codigo, quantidade, n_produtos:inteiro procedimento inicia_produtos inicio produtos[1].nome <- "Pão de queijo" produtos[1].codigo <- 100 produtos[1].valor <- 5.20 produtos[2].nome <- "Bauru simples" produtos[2].codigo <- 101 produtos[2].valor <- 7.30 produtos[3].nome <- "Quibe" produtos[3].codigo <- 102 produtos[3].valor <- 6.50 produtos[4].nome <- "Coxinha de frango" produtos[4].codigo <- 103 produtos[4].valor <- 6.70 produtos[5].nome <- "Torta de Frango (fatia)" produtos[5].codigo <- 104 produtos[5].valor <- 11.10 produtos[6].nome <- "Empada de bacalha" //WTF -_- produtos[6].codigo <- 105 produtos[6].valor <- 9.50 produtos[7].nome <- "Pão delícia" produtos[7].codigo <- 106 produtos[7].valor <- 5.80 produtos[8].nome <- "Esfirra" produtos[8].codigo <- 107 produtos[8].valor <- 8.40 produtos[9].nome <- "Rissole de queijo" produtos[9].codigo <- 108 produtos[9].valor <- 10.60 produtos[10].nome <- "Croquete" produtos[10].codigo <- 109 produtos[10].valor <- 9.10 fimProcedimento procedimento zera_produtos var contador:inteiro inicio para contador de 1 ate MAXIMO_PRODUTOS faca pedidos[contador] <- 0 fimPara fimProcedimento funcao checa_codigo(codigo:inteiro):logico var contador:inteiro inicio retorne falso para contador de 1 ate MAXIMO_PRODUTOS faca se codigo = produtos[contador].codigo entao retorne verdadeiro interrompa fimSe fimPara fimFuncao funcao posicao_codigo(codigo:inteiro):inteiro var contador:inteiro inicio para contador de 1 ate MAXIMO_PRODUTOS faca se codigo = produtos[contador].codigo entao retorne contador interrompa fimSe fimPara fimFuncao procedimento barra_s(tamanho:inteiro; adorno:caractere) var contador:inteiro inicio para contador de 1 ate tamanho faca escreva(adorno) fimPara escreval fimProcedimento procedimento faz_pausa var tmp:caractere inicio escreval("Pressione enter para continuar.") leia(tmp) fimProcedimento inicio // Inicia todos os produtos inicia_produtos deveContinuarPerguntando <- verdadeiro // Zera a lista de pedidos zera_produtos n_produtos <- 0 valor_total <- 0 repita barra_s(80, "_") escreval(" Delicatessen Veneza") barra_s(80, "_") escreval escreval(" Olá, seja Bem Vindo a Delicatessen Veneza") escreval(" O que vamos consumir hoje?") barra_s(80, "_") escreval repita escreva("Digite o codigo de um salgado que o cliente consumiu: ") leia(codigo) se checa_codigo(codigo) = falso entao escreval("Codigo invalido") fimSe ate não(checa_codigo(codigo) = falso) escreva("Digite a quantidade desse salgado que o cliente consumiu: ") leia(quantidade) // Coloca na lista de pedidos pedidos[posicao_codigo(codigo)] <- pedidos[posicao_codigo(codigo)]+quantidade escreval("O cliente consumiu mais algum salgado? Digite S(SIM) OU N(NÃO)") leia(clienteConsumiuMais) se clienteConsumiuMais = "S" entao deveContinuarPerguntando := verdadeiro seNao deveContinuarPerguntando := falso fimse ate não deveContinuarPerguntando para contador de 1 ate MAXIMO_PRODUTOS faca se pedidos[contador] > 0 entao escreval(produtos[contador].nome, "-", pedidos[contador], "*", produtos[contador].valor:2:2, "=", pedidos[contador]*produtos[contador].valor:2:2) n_produtos <- n_produtos+1 valor_total <- valor_total+(produtos[contador].valor*pedidos[contador]) fimSe fimPara escreval("Total de produtos pedidos ", n_produtos) escreval("O cliente deve pagar: R$", valor_total:6:2) escreval(" Obrigado volte sempre!") fimAlgoritmo
  2. @luquinhas44 Eu acho que você não está usando a versão do portugol studio de pc, é sim a versão online. eu recomendo você baixar a versão para o seu sistema operacional e ver a ajuda do programa que é bem mais completa do que a versão online. Eu declarei um vetor com a constante MAX_CARTEIRAS, quando o interpretador passar pela constante MAX_CARTEIRAS ele vai substituir pelo numero 4327. Veja a parte sobre vetores e constantes da ajuda do portugol ide. Veja bem, se eu fizesse assim enquanto (não(numero_atual >= 1 e numero_atual <= MAX_CARTEIRAS)) seria bem mais difícil de entender do que enquanto (numero_atual < 1 ou numero_atual > MAX_CARTEIRAS) É uma regra básica da proposição na simplificação de expressões lógicas para satisfazer uma condição lógica, porque o comando enquanto precisa que a expressão seja verdadeira para repetir os comandos. Leia a documentação do portugol studio, lá tem todas as respostas.
  3. @Gabriel213412 Não tá ruim, só está meio desorganizado. no caso de editar só uma linha. você pode fazer outro arquivo com a linha nova já editada pegando tudo do arquivo anterior. depois você apaga o arquivo velho é renomeia o arquivo novo para o nome do arquivo velho. Se você tiver replit entra na sala https://replit.com/join/reyknuezzm-kgin
  4. @Gabriel213412 Poste o enunciado e utilize o botão code para postar o código. Já pensou em refazer novamente e tentar fazer de outro modo?
  5. Delphi e o nome do programa. a linguagem utilizada e o object pascal até a versão 10 você poderia usar todas as extensões do pascal clássico (compatível com o turbo pascal de certo modo), Mas a partir do Alexandria não é mais possível utilizar todas as extensões do pascal. mas ainda e pascal!
  6. @VNtox Recomendo você procurar um livro chamado C completo e total. O autor do livro disponibilizou o livro gratuitamente na internet. Veja os seguintes tópicos. Matrizes e string. pagina 92 ponteiros. pagina 113 Estruturas, Uniões, enumerações e tipos definidos pelo usuário. pagina 167 procure por uma coisa chamada zlib que vai te ajudar também. Depois de estudar tudo isso, volte e de uma olhada no meu algoritmo /* Venda de ingressos */ #include <stdio.h> #include <string.h> /* Estados da poltrona */ #define POLTRONA_VAZIA 0 #define POLTRONA_OCUPADA 1 /* Quantidade de linhas e colunas do cinema */ #define Q_LINHAS_POLTRONAS 4 #define Q_COLUNAS_POLTRONAS 5 /* Tamanho maxímo do nome */ #define T_NOME 100 #define T_BUFFER 250 struct sessão { char nome[T_NOME]; int poltronas[Q_LINHAS_POLTRONAS][Q_COLUNAS_POLTRONAS]; }; void inicia_sessao(struct sessão *atual, char *nome) { int linhas, colunas; /* Coloca o nome da sessão */ strcpy(atual->nome, nome); /* Inicia as poltronas */ for (linhas = 0; linhas < Q_LINHAS_POLTRONAS; linhas++) { for (colunas = 0; colunas < Q_COLUNAS_POLTRONAS; colunas++) { atual->poltronas[linhas][colunas] = POLTRONA_VAZIA; } } } void mostra_sessao(struct sessão *atual) { int linhas, colunas; printf("\tNome da sessão:%s\n", atual->nome); printf(" |"); for (colunas = 0; colunas < Q_COLUNAS_POLTRONAS; colunas++) { printf("%i", colunas+1); if (colunas < Q_COLUNAS_POLTRONAS-1) { printf(" |"); } } printf("\n"); for (linhas = 0; linhas < Q_LINHAS_POLTRONAS; linhas++) { printf("%i |", linhas+1); for (colunas = 0; colunas < Q_COLUNAS_POLTRONAS; colunas++) { switch (atual->poltronas[linhas][colunas]) { case POLTRONA_VAZIA: printf("V"); break; case POLTRONA_OCUPADA: printf("O"); break; } if (colunas < Q_COLUNAS_POLTRONAS-1) { printf(" |"); } } printf("\n"); } printf("V = Vazio\nO = Ocupado\n"); } int main(void) { struct sessão filme; char buffer[T_BUFFER]; inicia_sessao(&filme, "Blame!"); do { int linha, coluna; mostra_sessao(&filme); printf("Digite a linha da poltrona desejada:"); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%i", &linha); printf("Digite a coluna da poltrona desejada:"); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%i", &coluna); if (linha-1 >= 0 && linha-1 < Q_LINHAS_POLTRONAS && coluna-1 >= 0 && coluna-1 < Q_COLUNAS_POLTRONAS) { if (filme.poltronas[linha-1][coluna-1] == POLTRONA_VAZIA) { filme.poltronas[linha-1][coluna-1] = POLTRONA_OCUPADA; printf("A poltrona foi ocupada!\n"); } else { printf("A poltrona ja esta ocupada!\n"); } } else { printf("poltrona invalida!\n"); } printf("Digite S para sair ou C para continuar\n"); fgets(buffer, T_BUFFER, stdin); } while (buffer[0] == 'C' || buffer[0] == 'c'); return(0); } Veja a relação dos dados e das poltronas com essa planilha poltronas.xlsx Depois tente entender como tudo foi implementado. Versão do código online!
  7. Não irei corrigir o seu algoritmo, mas, sim apontar o erro. programa { funcao inicio() { inteiro variaveis[7] faca { escreva ("\nDigite o numero da carteira de motorista: ") leia (variaveis[4]) escreva ("Digite o numero de multas: ") leia (variaveis[1]) escreva ("Digite o valor da multa: ") leia (variaveis[2]) variaveis[5] = variaveis[1] variaveis[6] = variaveis[4] se (variaveis[5] > variaveis[4]){ escreva ("O maior numero de multas é para a carteira: ", variaveis[5]) se (variaveis[6] > variaveis[1]) escreva ("O maior numero de multas é: ", variaveis[6]) } /* Falta a chave para fechar o bloco faca{..}enquanto() "}" */ enquanto (variaveis[0] > 0) /* Falta a chave "}" para fechar o bloco da função */ } Recomendo uma estratégia melhor para fazer o algoritmo. programa { inclua biblioteca Matematica // Quantidade maxima de carteiras de motorista const inteiro MAX_CARTEIRAS = 4327 funcao inicio() { // Salva o numero da carteira de motorista inteiro numero_carteira[MAX_CARTEIRAS] // Valor de debitos por carteira real multas_carteira[MAX_CARTEIRAS] // Quantindade de multas e carteiras pegas inteiro q_cadastrados = 0 caractere opcao faca { // Numero atual pego da carteira de motorista inteiro numero_atual = 0 // Quantidade de multas a serem pegas inteiro q_numero_multas // Multa atual real multa_atual = 0.0 // Soma de multas de cada motorista real soma_multas = 0.0 // Pega o numero da carteira de motorista // -O número da carteira de motorista (de 1 a 4327) faca { escreva("Digite o numero da carteira:") leia(numero_atual) limpa() se (numero_atual < 1 ou numero_atual > MAX_CARTEIRAS) { escreva("O numero da carteira não pode ser menor que 1 ou maior que ", MAX_CARTEIRAS,"\n") } } enquanto (numero_atual < 1 ou numero_atual > MAX_CARTEIRAS) // Salva o numero da carteira numero_carteira[q_cadastrados] = numero_atual escreva("Digite o numero de multas a serem pegas:") leia(q_numero_multas) limpa() // Pega todas as multas para (inteiro contador = 0; contador < q_numero_multas; contador++) { escreva("Digite o valor da multa [", contador+1, "]:") leia(multa_atual) limpa() soma_multas = soma_multas+multa_atual } // Salva a soma das multas da carteira atual multas_carteira[q_cadastrados] = soma_multas // Incrementa a quantidade de carteiras pegas q_cadastrados = q_cadastrados+1 // Pergunta se quer cadastra outra carteira escreva("Deseja cadastrar outra carteira?\n") escreva("S/N:") leia(opcao) } enquanto (opcao == 'S' ou opcao == 's') // Mostra a soma de todas as multas de cada carteira para (inteiro contador = 0; contador < q_cadastrados; contador++) { escreva("Divida da carteira ", numero_carteira[contador], " e ", Matematica.arredondar(multas_carteira[contador], 2), "\n") } } } É apenas um esboço do algoritmo!
  8. Recomendo você declarar dessa maneira algoritmo "aprovados" const Q_TURMAS = 4 Q_ALUNOS = 25 var notas_alunos:vetor [1..Q_TURMAS, 1..Q_ALUNOS] de real nomes_alunos:vetor [1..Q_TURMAS, 1..Q_ALUNOS] de caractere maiores_turma:vetor [1..Q_TURMAS] de inteiro turmas, alunos: inteiro maior_nota:real posicao_nota:inteiro nomes:vetor [1..5] de caractere sob_nomes:vetor [1..5] de caractere inicio // Inicia os nomes nomes[1] <- "Jose" nomes[2] <- "Maria" nomes[3] <- "Michellin" nomes[4] <- "Ronaldo" nomes[5] <- "Ivanildo" sob_nomes[1] <- " Machado" sob_nomes[2] <- " Do Allamo" sob_nomes[3] <- " Santana" sob_nomes[4] <- " Pinto" sob_nomes[5] <- " Soares" // Pega os nomes e as notas para turmas de 1 ate Q_TURMAS faca escreval("Digite os nomes e as notas dos alunos da turma ", carac(asc("A")+(turmas-1))) para alunos de 1 ate Q_ALUNOS faca escreval("Digite o nome do aluno [", alunos, "]") //leia(nomes_alunos[turmas, alunos]) nomes_alunos[turmas, alunos] <- nomes[randi(5)+1]+sob_nomes[randi(5)+1] escreval(nomes_alunos[turmas, alunos]) escreval("Digite a nota do aluno") //leia(notas_alunos[turmas, alunos]) notas_alunos[turmas, alunos] <- (rand*9)+1 escreval(notas_alunos[turmas, alunos]:2:2) fimPara fimPara para turmas de 1 ate Q_TURMAS faca maior_nota <- 0.0 para alunos de 1 ate Q_ALUNOS faca // Checa o aluno com a maior nota se maior_nota < notas_alunos[turmas, alunos] entao maior_nota <- notas_alunos[turmas, alunos] posicao_nota <- alunos fimSe fimPara maiores_turma[turmas] <- posicao_nota fimPara escreval("Maiores notas de cada turma") para turmas de 1 ate Q_TURMAS faca escreval("Maior nota da turma ", carac(asc("A")+(turmas-1))) escreval("Aluno ", nomes_alunos[turmas, maiores_turma[turmas]]) escreval("Nota ", notas_alunos[turmas, maiores_turma[turmas]]:2:2) fimPara fimAlgoritmo
  9. @Vitor.MP4 Recomendo você parar de usar fflush(). Eu dei uma organizada e implementei uma maneira de fazer a busca. De uma olhada #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define T_BUFFER 512 #define T_NOME 80 #define T_CPF 16 #define T_VACINA 100 #define T_DATA 15 #define Q_MAXIMO_VACINADOS 200 struct registro_vacinado { char nome[T_NOME]; char cpf[T_CPF]; char vacina[T_VACINA]; char data[T_DATA]; int lote; }; void msg_pausa(char *msg) { char buffer[T_BUFFER]; if (msg != NULL) { printf("%s\n", msg); } printf("Pressione enter para continuar!\n"); fgets(buffer, T_BUFFER, stdin); } void barra_simples(int tamanho, char chr) { int contador; for (contador = 0; contador < tamanho; contador++) putchar(chr); putchar('\n'); } int menu_principal(void) { char buffer[T_BUFFER] = {'\0'}; int opcao; do { barra_simples(20, '='); printf("1-Registrar Vacinado.\n"); printf("2-Listar Aplicacoes.\n"); printf("3-Buscar CPF.\n"); printf("4-Sair.\n"); barra_simples(20, '='); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%i", &opcao); if (opcao < 1 || opcao > 4) { printf("Opcao invalida!\n"); } } while (opcao < 1 || opcao > 4); return(opcao); } int main(void) { struct registro_vacinado vacinados[Q_MAXIMO_VACINADOS]; int q_registros = 0, opcao = 0, contador, n_busca = 0; char buffer[T_BUFFER]; do { opcao = menu_principal(); switch (opcao) { case 1: do { struct registro_vacinado tmp; do { printf("Insira seu nome:"); fgets(buffer, T_BUFFER, stdin); buffer[strlen(buffer)-1] = '\0'; strcpy(tmp.nome, buffer); printf("Insira seu CPF sem tracos ou pontos:"); fgets(buffer, T_BUFFER, stdin); buffer[strlen(buffer)-1] = '\0'; strcpy(tmp.cpf, buffer); printf("Insira nome da Vacina:"); fgets(buffer, T_BUFFER, stdin); buffer[strlen(buffer)-1] = '\0'; strcpy(tmp.vacina, buffer); printf("Insira a Data:"); fgets(buffer, T_BUFFER, stdin); buffer[strlen(buffer)-1] = '\0'; strcpy(tmp.data, buffer); printf("Insira numero do lote:"); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%i", &tmp.lote); barra_simples(40, '-'); printf("Nome:%s\n", tmp.nome); printf("CPF:%s\n", tmp.cpf); printf("Nome da vacina:%s\n", tmp.vacina); printf("Data da vacinacao:%s\n", tmp.data); printf("Numero do lote:%i\n", tmp.lote); barra_simples(40, '-'); printf("As informações estão corretas?\n1\\Sim ou 2\\não\n"); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%i", &opcao); if (opcao == 2) { printf("Insira as informações novamente!\n"); } } while (opcao == 2); printf("Salvar o cadastro?\n1\\Sim 2\\não\n"); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%i", &opcao); if (opcao == 1) { vacinados[q_registros] = tmp; q_registros++; } printf("Fazer outro cadastro?\n1\\Sim 2\\não\n"); fgets(buffer, T_BUFFER, stdin); sscanf(buffer, "%i", &opcao); } while (opcao == 1); opcao = 0; break; case 2: for (contador = 0; contador < q_registros; contador++) { printf("Exibindo cadastros\n"); printf("Nome:%s\n", vacinados[contador].nome); printf("CPF:%s\n", vacinados[contador].cpf); printf("Nome da Vacina:%s\n", vacinados[contador].vacina); printf("Data:%s\n", vacinados[contador].data); printf("Numero do lote:%i\n", vacinados[contador].lote); msg_pausa(NULL); } break; case 3: printf("Digite o cpf para ser encontrado:"); fgets(buffer, T_BUFFER, stdin); buffer[strlen(buffer)-1] = '\0'; for (contador = 0; contador < q_registros; contador++) { if (strcmp(vacinados[contador].cpf, buffer) == 0) { n_busca = contador; break; } } if (contador < q_registros) { printf("Registro de vacina encontrado!\n"); printf("O cpf %s e da pessoa %s\n", vacinados[n_busca].cpf, vacinados[n_busca].nome); } else { printf("Registro não encontrado!\n"); } msg_pausa(NULL); break; case 4: msg_pausa("O programa sera finalizado!"); } } while (opcao != 4); return(0); } Versão online!
  10. #include <stdio.h> #include <ctype.h> #define Q_VOGAIS 5 #define TAM_FRASE 512 int main(void) { const char VOGAIS[Q_VOGAIS] = {'A', 'E', 'I', 'O', 'U'}; char frase[TAM_FRASE] = {'\0'}; int contador1, contador2, q_vogais_frase = 0; printf("Digite uma frase:"); fgets(frase, TAM_FRASE, stdin); for (contador1 = 0; frase[contador1]&&contador1 < TAM_FRASE; contador1++) { for (contador2 = 0; contador2 < Q_VOGAIS; contador2++) { if (toupper(frase[contador1]) == VOGAIS[contador2]) { q_vogais_frase++; break; } } } printf("A frase %s tem %i vogais\n", frase, q_vogais_frase); return(0); }
  11. @Nicolas Stevan tá meio complicado o seu algoritmo, e ele também tá com um erro que eu não estou conseguindo visualizar uma solução. Erro apresentado Poste o código com o botão <> code no fórum. ter que ficar copiando do fórum muda a formatação do código.
  12. @Nicolas Stevan Poderia postar o enunciado?
  13. kgin

    C Como insiro o while

    @DaviKS Poste o enunciado e de mais detalhes do que você está tentando fazer
  14. @Mariana Coradini poste o que você já fez, que talvez nós podemos ajudar.
  15. @Erison Cleyton Não sei o seu nível de C++, mas eu recomendaria você tomar outro rumo. Usar o visual studio seria um bom primeiro passo, com ele você pode fazer interfaces gráficas mais facilmente. Mas se você optar por usar a api do windows eu recomendo checar esse tutorial antes. https://zetcode.com/gui/winapi/

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

Como se tornar um desenvolvedor full-stack

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!