Ir ao conteúdo
  • Cadastre-se

mauro_b

Membro Pleno
  • Total de itens

    3.027
  • Cadastrado em

  • Última visita

  • Qualificações

    0%

Tudo que mauro_b postou

  1. Olá! Talvez procure a função fscanf combinada à 'scanset' - sem/com gravação p. ex: signed answer = -1; for (unsigned nregistro = 0 ; nregistro < 3 ; ++ nregistro) { answer = fscanf(arquivo , " %*[^\n]"); if (answer != 0) break; } " %*[^\n]" --- registra que todos os caracteres até \n (Nova Linha) são lidos e não gravados. Para gravação, delete o asterisco e forneça um endereço de memória no argumento seguinte à 'strings' de formato. char buff[BUFSIZ]; signed answer = -1; for (unsigned nregistro = 0 ; nregistro < 3 ; ++ nregistro) { answer = fscanf(arquivo , " %[^\n]" , &buff[0]); if (answer != 0) break; } () --- é isso?
  2. Olá! #1 "0,70 fica maior que 0,65" Na imagem ao lado, o banco da 'garotada', tinha um rendimento anual que convertido para mensal é de 0,37%. E não existe rendimento diário acumulativo, assim quando sua poupança completa ANIVERSÁRIO mensal, aplica-se o rendimento do dia base. O dia base (do depósito) é o dia em que, no mês anterior, realizou-se o investimento na poupança. Recomendam que se aplique montantes em semanas diferentes do mês para melhor rentabilidade, porém mais antigamente a recomendação diferiu: Em 2015, por exemplo, quando o investimento ainda era um bicho complicado, o comum era recomendar aos estudantes (e trabalhadores) investirem um pedaço da mesada no mesmo dia, sempre. Assim, o segundo período (0.70%) tem rentabilidade maior que os outros (0.60% e 0.65%). [] Uma criança esperta deposita, sua mesada, nos períodos de maior rentabilidade: 11 a 31 (28) de cada mês.
  3. Olá! #1 "0.65/100 o valor da menor do que o do dia 11." #2 "11... o rendimento será de 0,7% MAIOR QUE 21... o rendimento será de 0,65%" O último (dos 3 períodos) é 0.05% menor que o segundo, e 0.05% maior que o primeiro período. if ((dia >= 1) && (dia <= 10)) { soma = poupanca * 1.0060; } else if ((dia >= 11) && (dia <= 20)) { soma = poupanca * 1.0070; } else if ((dia >= 21) && (dia <= 31)) { soma = poupanca * 1.0065; } #R Como resultado da expressão, a variável soma, contém o valor da poupança + rendimento. [] @Rebeka O rendimento mensal da poupança hoje é de 0,24%, ou seja, poupança = 1.0024 * poupança.
  4. Olá! #1 este é o algoritmo ou função: inversão dos valores nas posições equidistantes, excluído a última (tam). #2 esta é a "result" ou saída Há lógica que relacione função e "result"? Não! E necessário saber quais os valores de ENTRADA e SAÍDA para desenvolver sua lógica (PROCESSO)! Explique-se [] @Caio Fagundes21
  5. Olá! #1 "estou usando a função srand (de stdlib.h), mas não sei gerar números aleatórios dessa forma. Se alguém souber me ajude" #2 "As posições do vetor em que os números aparecem devem ser aleatório" #R resolve-se, usualmente, com qualquer algoritmo de embaralhamento por exemplo, Embaralhamento de Fisher-Yates O recurso da linguagem (C) necessário tem no básico. [] @André Gomides
  6. Olá! O programa principal necessita do subprograma (ou função) que faz o https://pt.wikipedia.org/wiki/Teste_de_primalidade. Compreenda que o teste é o cerna da questão (não importando a linguagem) e tu (e mais ninguém) precisas de uma tentativa sincera de solução: é um exercício (e não uma prova) para você então faça os seguintes passos; 1. Releia o apontamento da questão quando (e se) precisar, apos, 2. Escreva suas dúvidas e 3. Poste na comunidade que eu verei a melhor forma ajudar-vos no vosso exercício. []
  7. @Caio Fagundes21 Olá. A redação pareceu tão óbvio para seu autor que ele não exemplifica A entrada e A saída Uma interpretação de "entre estes" é intervalo: são todas operações 2-ária (de dois operandos) que se pretende uma saída escolhendo os operandos no intervalo (a, b) dois a dois, assim tem-se uma iteração de AB. ai operador (ai + 1) Por exemplo, uma entrada é -10 10, o inteiro zero aparece duas vezes (-1 operadores 0 , 0 operadores 1). Mais tarde chega alguém para dizer que estou errado, porém, essa é minha opinião, []
  8. Olá@Leonardo Baioco Antes de escrever o programa certifique-se do entendimento do enunciado, Não escreva nada em C enquanto inseguro das partes que compões a estrutura do programa e seus quesitos. "Como fazer calculos com vetores?" Sua dúvida é com relação aos vetores... coloque nas partes (entrada, saída e processo) Vejamos, o dito: Parafraseando: Um cadastro tem 1000 registros, um dos (de dois) campos nesse registro tem é a resposta 'S' ou 'N', respectivamente sim ou não. Para o sexo não é especificado nenhum código, mas o usual é: homem ou mulher: 'H' ou 'M'. O exercício prenuncia o uso de vetores, logo suponha ser para cada informação (sexos e respostas) um 'buffer' de 1k, e outros mais se puder, já que é para usar vetores, por exemplo, um vetor para guarda o cálculo (relatorios). Relatório Poderíamos calcular essas informações durante entrada porque é uma iteração e as alíneas são simples contagens condicionadas, a exceção d), que é uma resposta condicionada ao cálculo durante a entrada sendo assim usualmente obtida fora dela. Entretanto, se escolhe usar vetores nas 3 partes: Ler (todo 1k de cadastro), Calcular (e tabular no vetor relatório) Mostrar (o relatório). Fica assim, o bloco de entrada somente isso mesmo: A leitura completa do cadastro. @Leonardo Baioco Entendo de sua programação unicamente a leitura cadastro (com tentativa com vetores), já calcule e mostre poderia ficar com vetor relatórios. Veja minha tentativa para ler o cadastro: /* Linguagem C de Programação @file main.c @date 06 de 2021*/ #include <stdio.h> #include <stdlib.h> int main ( int argc , char *argv [] ) { /*CADASTRAR*/ /*define-se cadastros sobre dos campos; sexos, respostas -- máximo de 1k*/ char sexos [1000] = { 0 } , respostas [1000] = { 0 }; /* M- mulher S- sim H- homem N- não */ /*mais duas strings para entrada de sexo e resposta*/ char sex [2] = { 0 } , respost [2] = { 0 }; int contador = 0; /*para ler enquanto há cadastros e o máximo.*/ while (contador < 1000 && 2 == scanf (" %1[MH] %1[SN]" , &sex [0] , &respost [0] )) { sexos [contador] = sex [0]; respostas [contador] = respost [0]; contador = 1 + contador; } /*!bloco para ajudar somente no GDB!*/ { if (contador) { printf ( " Contador - 1 ....... : %d\n" , (contador - 1) ); printf ( " Ultimo sexo ........ : %c\n" , sexos [contador - 1] ); printf ( " Ultima resposta .... : %c\n" , respostas [contador - 1] ); } printf ( "FIM ENTRADA\n" ); } /*CALCULAR*/ int relatorios [4] = { 0 , /*o número de pessoas que responderam sim;*/ 0 , /*o número de pessoas que responderam não;*/ 0 , /*o número de mulheres que responderam sim;*/ -1 , /*se as pessoas (1) gostaram ou (0) não do produto*/ }; /*MOSTRAR*/ //system ( "PAUSE" ); /*'paradinha' no prompt do Windows*/ return (EXIT_SUCCESS); } Notou que tenho 4 vetores só para entrar com as informações, incluído relatório que talvez tente (você) implementar. Enfim, contemple o máximo de quesitos do enunciado. []
  9. Olá @FABIANOSILVA1979 Faça melhor, fazendo os dois e na sequência porque é muito mais confortável traduzir em C++ uma lógica escrita em português: nesse caso de um algoritmo na Descritiva Narrativa. O enunciado informa sua Entrada e Saída, e pede que pense na lógica que relaciona essas duas informações, se ainda tem dificuldade nesse quesito: talvez se descrevesse um exemplo da funcionalidade compreendesse o seu algoritmo, experimente... simule uma entrada, determine a saída da simulação com atenção e (Do começo ao Fim) escreva o processo mental, (não em Visualg) que entre outras coisas notará que peso não é sobre arranjo. Após o algoritmo pronto, consulte as intrusões em C++. Se depois disso ainda restam dúvidas, sinta-se a vontade para compartilhar conosco. []
  10. @Emerson2156547384729849 Olá! Sim e tem nome para regra, chama-se: programação Imperativa, geralmente não fica só nesse padrão então não se dedique; esse alerte é válido porque entre os modelos esse é a que mais se assemelha com pensamento e essa é a razão de ser fácil se apegar, e de ser o primeiro modelo dos principiantes, porém logo-logo será substituído pela programação estruturada, etc. Pense imperativamente em como você faria, escreva as instruções em português (etapa por etapa) e por fim faça uma tentativa sincera da solução em linguagem c, caso precise de ajuda compartilhe suas versões (em português e c). Até []
  11. @Cássia5451y Considere essas variáveis (peso, peso Maior) inicializadas. Haverá algumas situações em que essa decisão sairá errada porque a peça de peso maior não coincide com a peça maior (entre todas), só para exemplificar analise 2 peças de mesmo peso e material diferente, concluirá que a menos densa é também com mais tamanho. Outra coisa é que se a expressão na primeira decisão se resolve verdadeira, a segunda expressão é, por consequência, falsa. Traduzido em código, tem-se isto: // Todas as peças if(peso > pesoMaior) pesoMaior = peso; else if(peso < pesoMenor) pesoMeno r= peso; Isso não resolve a diferença entre tamanhos e peso que existe entre as diferentes substâncias nessa decisão. Logicamente, após decisão da peça com peso maior de cada material se decide em seguida o maior dos "3 maiores". []
  12. mauro_b

    C++ Código Java em c++

    Precisa dele para quê? O programa é Digitar (na entrada) e Mostrar (na saída) alguns números listados sobre vetores e ordenados, senão pelo menos foi isso que pretenderam. Olha em seu processo, nota-se ser uma versão do algoritmo de ordenação bubble Sort. Se procurar com vontade não só encontrar em C++, como em qualquer outra linguagem, pois é um algoritmo clássico. Sim... eu sei que ao procurar ajuda no fórum já está fazendo a bendita procura... e no fórum é mais fácil porque todos estão loucos para demostrar seus conhecimentos e blablabla. Isso numa época que não existia livro de graça e ‘internet’ também de graça seria verdade, mas hoje todo iniciante já sabe se virar. E você também pode, perceba que a única diferença está nas funções de entrada e saída. Muita mais vale começar a lógica em C++ que aprender dois segundos de Java só para reescrever esse programa na linguagem. Sim, se por acaso está pensando que o tempo que eu passei digitando isso eu teria feito essa tradução por você, então está certíssimo... ainda assim, é mais divertido dá uma lição. sorry!
  13. Não, não, está comentando de outra situação, que não é que se encontra no enunciado do exercício. E sim, penso que a maioria entendeu o que tentou explicar e as diferenças dos diferentes retornos da função. Sim, sim, sabemos o que tem no enunciado para a partir disso racionalizar um programa, ao menos uma solução que funcione num caso específico sem se preocupar se o tal "usuário" vai teclar com bund4 ou bater com teclado na cabeça, ou digitará além do permitido, ou quais enganos de poderiam afetar a resposta, ou quais situações fora do escopo normal de leitura da função fgets. Não, não... eu não preciso que diga nada sobre abrir fluxos ou traga outras complicações para o que já está por demais discutido. Vamos usar redirecionamento na linha de comando, na forma correta, e avaliar o newLine (no padrão Windows). Vejam abaixo, usei um programa dessa discussão e um arquivo digitado com newLine. Resultado 2 letras ou 2 char. Por ora isso é tudo que precisamos para escrever uma solução. A situação [aquela definida pelo enunciado] Como pretende ler os dados? Redirecionando o fluxo de entrada no Windows Supondo que o arquivo tem 10 palavras e cada palavra de no máximo 30 caracteres [conforme enunciado], e estão separadas por ENTER Desse jeito: canelas-sassafrasinho-do-campo cabecas-duras-focinhos brocas-do-coleto-do-algodoeiro borboleta-amarela-da-mamoneira bicos-de-brasa-de-testa-branca bico-grosso-da-garganta-branca besouros-amarelos-do-eucalipta beija-flores-de-orelha-violeta beija-flor-de-gravata beija-flor-azul-de-rabo-branco O vetor vai precisar de no máximo capacidade suficiente para 30 caracteres ou letras + o separador de palavras. main.c #include <stdio.h> #include <string.h> int func( void ){ char palavra[33] = { 0 }; fgets( palavra , 33 , stdin ); if (palavra[0]) printf( "Leu %zd letras.\n" , strlen( palavra ) - 2 ); return 0; } int main( void ){ for (int i = 0 ; i < 10 ; ++i){ func( ); } return 0; } Ilustração Um padrão Windows que difere do padrão (Norma) do C não dificulta em nada a solução, em específico, para leitura com redirecionamento. Veja o texto da normal Numa situação normal a função não mais captura dados, após encontrar o caractere de nova linha ou atingir o limite especificado pela variável com valor do tamanho. Tradução Eletrônica: Descrição No portal: https://www.cplusplus.com/reference/cstdio/fgets/ Aqui a discrição é um pouco mais clara, principalmente, com o significa de retido: Um caractere de nova linha faz com que fgets pare, porém, é um caractere válido pela função e incluído na ‘string’ copiada para str. Ou seja, a função para de lê de duas maneiras: quando atinge o limite estipulado e quando o caractere de nova linha é lido, o que vier primeiro em caso de sucesso. Portanto, o caractere de nova linha é considerado um caractere válido pela função, havendo espaço ele será copiado para o vetor com os outros isso pode estar afetando seus "contadores", caro usuário.
  14. Fiz o teste para um só palavra sem dar NL no arquivo. Ele não aparece, porque não tem. Legal Dar um Enter lá, e pronto ele aparece junto a última letra. acetilparaetoxilfeniluretanico[CRFL] Ainda não entendi porque 32 ou 33 caracteres não resolve esse problema. Se tem que resolver com fgets então: Captura-se a linha com 32 ou 33 caracteres, pois sabemos que se não for assim vai ter que liberar esses não uteis para o resultado de outra maneira. Já sabe que 2 deles é newLine então subtraia do resultado do retorno da strlen.
  15. ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 30 letras. A frase: 97 99 101 116 105 108 112 97 114 97 101 116 111 120 105 108 102 101 110 105 108 117 114 101 116 -61 -94 110 105 99 A frase: acetilparaetoxilfeniluretânic ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 3 letras. A frase: 111 13 10 A frase: o ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 30 letras. A frase: 97 108 102 97 102 97 115 45 100 101 45 115 101 109 101 110 116 101 115 45 101 115 112 105 110 104 111 115 97 115 A frase: alfafas-de-sementes-espinhosas ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 2 letras. A frase: 13 10 A frase: ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 30 letras. A frase: 97 110 100 111 114 105 110 104 97 115 45 100 101 45 112 101 115 99 111 -61 -89 111 45 118 101 114 109 101 108 104 A frase: andorinhas-de-pescoço-vermelh ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 3 letras. A frase: 111 13 10 A frase: o ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 30 letras. A frase: 98 97 108 97 110 -61 -89 97 45 114 97 98 111 45 100 101 45 103 97 114 103 97 110 116 97 45 112 114 101 116 A frase: balança-rabo-de-garganta-pret ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 3 letras. A frase: 97 13 10 A frase: a ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 30 letras. A frase: 98 101 105 106 97 45 102 108 111 114 45 97 122 117 108 45 100 101 45 114 97 98 111 45 98 114 97 110 99 111 A frase: beija-flor-azul-de-rabo-branco ....*....1....*....2....*....3 1...*....0....*....0....*....0 Digite uma frase com ate 30 letras: Leu 2 letras. A frase: 13 10 A frase: output.txt main.c #include "stdio.h" #include "string.h" int func( void ){ char pal[31] = { 0 }; printf("\ ....*....1....*....2....*....3\n\ 1...*....0....*....0....*....0\n\ Digite uma frase com ate 30 letras: "); char* p = fgets(pal, 31, stdin); printf("\tLeu %zd letras. A frase:\n", strlen(pal)); for (int i = 0; i < strlen(pal); i += 1) printf("%d ", pal[i]); printf("\nA frase: "); puts(p); return 0; } int main( void ){ for(int i = 0 ; i < 10 ; ++i){ func( ); } return 0; } O caractere newLine (que nos arquivos do Windows é; CRLF) sendo capturado. Porque arquivos gerados no Windows tem um padrão. [] Função fgets para no LF, conforme a normal (padrão)
  16. Existe um controle de produtos vendidos? Pode ser um vetor, cujo valores são códigos de produtos vendidos, e daí eles se repetem dentro, basta ordenar para saber a quantidade de cada. Ou um vetor de vendidos, cujo os índices são relacionados ao códigos dos produtos, e cada em cada índice é a quantidade de vendas respectivamente. p. Ex. Código 100 por exemplo, é associado ao índice 0 desse vetor, então o valor no índice 0 é a quantidade de vendas do produto de código 100. Isso faz sentido? De qualquer maneira, acho que é assim que se resolve essa questão.
  17. Não sei qual dos programas desses (na discussão) me permitiria testar um arquivo naquele formato padrão da função fgets. Por quê? Eu não preciso provar nada a ninguém @arfneto , muito menos para um estranho que frequenta o mesmo fórum de discussão. Não é você que decide o que é objetivo ou não. Mas está livre para deixar sua OPINIÃO, como sempre fez. Além disso, não seguirei sua recomendação porque poderia está resolvendo o exercício por ele (o autor do tópico) sem haver necessidade para tanto, mas não me importo que outros o faça, cada qual usa o fórum do seu modo, e isso é super normal. []
  18. esse não é o texto na norma (padrão). Só especulação, o enunciando garante que a palavra tem no máximo 30 caracteres, mas não diz nada sobre exceções do tipo que leva o usuário a cometer erros, nem se que sabe ao certo se O usuário é humano, a entrada pode bem vir formada de outra sistema. Decerto a palavra tem no máximo 30... isso é garantido por razão do enunciado Exemplo: castanhas-subterrâneas-maiores acetilparaetoxilfeniluretânico capins-finos-de-folha-comprida canelas-sassafrasinho-do-campo cabeças-duras-focinhos-de-rato brocas-do-coleto-do-algodoeiro borboleta-amarela-da-mamoneira bicos-de-brasa-de-testa-branca bico-grosso-da-garganta-branca besouros-amarelos-do-eucalipta beija-flores-de-orelha-violeta beija-flor-de-gravata-vermelha beija-flor-azul-de-rabo-branco @arfneto Quais dos programas testamos um arquivo assim?
  19. O exercício está situado em três etapas a primeira é Ler os 5 nomes de máximo 70 caracteres (está garantido de que não haverá entradas de nomes acima de 70 caracteres). Você pode escrever essa entrada "analiticamente", passo a passo um comando para cada nome, ou fazer com está fazendo, porém, a estrutura deve cuidar apenas da Leitura, Ler ou (Entrada) p. Ex: char nomes[5][71]; /**! * Entrada dos Nomes * * Querendo descreva o que acontece abaixo, ou não. */ for( int i = 0 ; i < 5 ; i = 1 + i ){ printf( "Digite seus dois primeiros nomes (no máximo 70 caracteres): " ); scanf( " %70[^\n]" , &nomes[i][0] ); } Converter (processo) e Imprimir (saída) podem ou não estarem no mesmo ‘loop’, penso que se entende mais quando estão cada qual no seu. Já a entrada, essa realmente me parece ser solitária. []
  20. Essa é a sua opinião. Não entendi... [] Esta é a documentação dela, onde errei
  21. Lendo ou relendo só esse trecho, porque é tudo que existe do enunciado, alguém pode se pergunta qual é o separado das palavras? Toda resposta é o máximo 30 caracteres ou a linha, o que vier primeiro. Ou seja, usualmente para toda situação em que a palavra tem menos de 30 caracteres está capturando a nova linha, exceto quando a palavra tem os exatos 30 caracteres. Na expressão que realiza a contagem, pode ou não contar o newline com um digitável, depende do que está escrito no enunciado, mas o caractere precisa ser capturado. Por esse motivo Nada no enunciado leva a acreditar que essa não é uma situação normal e que os dados fornecidos, sendo as palavras no limite do máximo, estarão fora do limite do que estipula o exercício. São hipóteses que o usuário criou para justificar sua opinião. Se tratando de exercício, a menos que se prenuncie contrário; os dados fornecidos são ideais (sem falhas).
  22. É porque identificação deve ser única, você poderia identificar cada input radio sequencialmente de 'r1' até 'r5' também, depois usar um loop para resgatar o valor em cada um deles, ou escrever a verificação um a um que também é bom.
  23. A capacidade do vetor ainda não é o bastante para comprimento da ‘string’ Capacidade = comprimento (70) + 1; do contrário, para todos os casos que há espaço na posição máxima (70) o algoritmo falha Se usar o seguinte comando que captura a linha ou 69 caracteres, o que ocorrer primeiro. Independe..., siga o enunciado capturando o máximo 70 caracteres ou a linha. fgets( pal , 71 , stdin ); []
  24. OK Como disse antes, é melhor com enunciado completo. Sim, mais como falei, e vou falar outras vezes caso não tenha entendido da primeira. Eu até gosto de argumentos, porém nesse caso penso ser melhor o enunciado completo do autor da dúvida. Só para confirmar se um caractere a mais ou a menos faz diferença. No aguardo []
  25. Uns IDE tem esse recurso, incluindo uns ‘na ‘internet’’ exemplo: https://www.onlinegdb.com/, cujo nome já diz tudo. É legal. []

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

Curso de Redes MikroTik

LANÇAMENTO!

CLIQUE AQUI PARA SE INSCREVER!

* Este curso não é ministrado pela equipe do Clube do Hardware.