Ir ao conteúdo
  • Cadastre-se

mauro_b

Membro Pleno
  • Total de itens

    3.027
  • Cadastrado em

  • Última visita

  • Qualificações

    0%

Tópicos solucionados

  1. O post de mauro_b em Juntar duas linguagens, a C para parte de código e Visual Basic p/ grafico? foi marcado como solução   
    C linguagem impolgante e você vai encontrar o melhor ritmo para você.
  2. O post de mauro_b em A expressão deve conter tipo ponteiro para objeto foi marcado como solução   
    São aquelas expressões com notação de array com duplo subscritor. A notação usada é de ponteiro para array.
     
    O curioso é maneira de avisar, a menos que tenha omitido o resto da mensagem,
    Pois, não diz objetivamente o que é o erro, mas sim, o que se espera, ou seja, o programador quer um   int[][T]   a partir de   int*  (ou int[]).
     
     
    A resposta dessa função é bem mais que calcular, após somar imprime o resultado.
     
    Com a sobrecarrega da função remove-se o significado (ou parte) do seu retorno.
     
    E quando digo retorno, refiro-me a variável   mat_C   que é a SOMA.
     
     
    Nesse comando o programador fica mais exigente. Essa é a notação de ponteiro para array duplo ou (int *)[T1][T2]
     
    []
  3. O post de mauro_b em Arrays em C URI foi marcado como solução   
    Entrada
     
    Saída
     
     
    Rapidamente eu diria que a maioria dos usuários usou    tabela hash    para resolver.
    São duas informações, a primeira entrada é capacidade (N + 1) do vetor (tabela hash) e a segunda
    quantidade de chaves (índices para o vetor).
    Analisando essas informações, diria que o vetor (tabela hash) tema capacidade igual a 7
    A quantidade de chaves é 10, ou seja, serão 10 entradas antes de fim.
     
    Sempre que houver colisões, ou seja, o subscrito da tabela retorna um valor diferente de 0 incremente o contador, que no contexto do problema representa o acumulo de bilhetes falsos, ou não original.
     
    Caso não haja colisão, ou seja o subscrito retorne 0, então esse é um bilhete original e precisa ser atribuído valor 1 no subscrito. Segue a ilustração
    6 10 | 6 1 3 6 6 4 2 3 1 2 | | | | | | | | | | hash[7] = {0}; | | | | // todos os subscritos são 0. | | | | hash[6] tem valor? 0 então atribuir 1 hash[1] tem valor? 0 então atribuir 1 hash[3] tem valor? 0 então atribuir 1 hash[6] tem valor? 1 então colisão incrementar contador ... A resposta final é 4 colisões: (6)x2, (3)x1, (2)x1
    [  ]
     
  4. O post de mauro_b em Equação seguno grau em C usando ponteiros foi marcado como solução   
    É porque DELTA: b*b - (4*a*c)
    É negativo, a raiz quadrado de um número negativo gera esse código impresso.
     
    Temos que testar se DELTA < 0 antes de calcular a RAIZ quadrada dele,
     
    Lá na função:
    float d= b * b - 4 * a * c; if(d < 0) return -1; d= sqrt( d ); *x1 = - (b + d) / (2 * a); *x2 = (d - b) / (2 * a); return d;  
     
  5. O post de mauro_b em Tabuada em C - Matriz foi marcado como solução   
    @MQTTH  boa noite...
     
     
    A necessidade de matriz é devido ao que é computação em três palavras: entrada -- processamento -- saída. A maneira que resolveu entrega os resultados. Entretanto, processamento e disposição (layout) de informação (Saída) são praticamento o mesmo procedimento. Supondo que essa etapa processamento (produto) é muito demorada e que você precise dispor os dados de muitas formas; com a matriz de produtos recalcular tudo para cada um dos formatos não é necessário.
     
    Basicamente, escreva um trio de produtos por ciclo sobre a matriz na linha do terminal com formatação de linha.
    for( ){ printf( "%d x %d = %d -- " "%d x %d = %d -- " "%d x %d = %d \n", ); }  
     
  6. O post de mauro_b em Armazenar valor em um Ponteiro de Struct foi marcado como solução   
    A estrutura  'dados_aluno' é uma abstração [concepção da inteligência] de aluno no sistema, logo uma variável dessa chamada por RG ou NOME não tem sentido, e sabemos que esses nomes são elementos [ou campos] do tipo abstrato de dados em questão. Tudo torna essa escolha inadequada e desperdício de memória porque objetivou um campo da estrutura.
     
    Corrigido
    #include<stdio.h> //Criaçao do Registro (Struct) para armazenar os dados do aluno: Nome do Aluno e identificador RG struct Dados_Aluno { //Nome da Estrutura char nome [20]; //Variável char que armazena o nome do aluno int identificacao; // variavel int que armazena o RR do aluno }; //Programa Principal int main(void) { struct Dados_Aluno aluno; //Varável do tipo [abstrato] dados_aluno struct Dados_Aluno *ponteiro; //Ponteiro para a Struct dados_aluno printf("Digite o nome do Aluno: "); fgets(aluno.nome, 40, stdin); //Leitura do nome do Aluno printf("Digite o RG do Aluno: "); scanf("%d", &aluno.identificacao); //Leitura do RG do Aluno ponteiro = &aluno; //Atribui o valor lido do teclado Da variável RG ao ponteiro printf("-------------------------------------------\n"); printf("Nome do Aluno: %s", aluno.nome); //Imprime o nome do Aluno printf("RG do Aluno: %d\n ", aluno.identificacao); //Imprime o Rg do aluno printf("-------------------------------------------\n"); printf("Ponteiro = %s", ponteiro); //Imprime o valor armazenado no ponteiro return 0; }  
    O ponteiro [O endereço] de um tipo abstrato de dados é o endereço do primeiro campo dessa estrutura, e sabemos que nesse caso é a 'string' nome e não rg/identificacao
  7. O post de mauro_b em erro na alocação em c foi marcado como solução   
    A função realloc obriga realoque de memória anteriormente alocada, e sabemos que os endereços em x e f são da função [ou seja, declarados] esses locais não devem ser realocados. Com isso, especulo que rotinas internas interrompem (bruscamente) o programa por motivo de falha no uso da função.
  8. O post de mauro_b em Retirar posição de uma lista encadeada foi marcado como solução   
    Seu programa pretende percorra a lista somente se o número de posições é maior que 1. Seja  posicao  igual à terceira da lista e o que pretende excluir, no fim, em  aux.  Com isso também  último valor no contador do loop for (int i) é igual a 3 na constante posicao. Vamos dizer com isso que aux2 é, na verdade, aux - 1 ou é o ponteiro logicamente anterior  ao  aux.
    void remove_elemento (no **list, const int posicao){ if (list == NULL) return; no *aux= *list, *aux2 = NULL; int i= 0x0; if ((aux == NULL) || (posicao < 1)) return; // if((*list = NULL) || (posicao < 1)) return; if (posicao == 1) { // aux = *list; *list= aux->proximo; free (aux); return; } for (i= 0x1; i < posicao; ++i) { // for (i= 1; i < posicao-1; i++) { if (aux == NULL) return; // if(aux->proximo == NULL) return; aux2= aux, aux= aux->proximo; } aux2->proximo = aux->proximo; // # Lembre-se que aux2 é logicamente anterior ao aux a cada laço for. // [!] aux2->proximo foi igual ao aux agora é igual ao aux->proximo ou // o que vem depois de aux2 + 2 o mesmo que aux + 1. Resta apenas excluir o aux. free (aux); return; }  
  9. O post de mauro_b em Problemas na inserção de pilha por arranjo foi marcado como solução   
    Lembre-se que a categoria de dado 'primitivo' no cerne da pilha ('stack') é, atualmente, um escalar de flutuante ('float') então o especificador na função   'printf'   da biblioteca padrão também precisa do tipo designado para um item desse escalar ("float"). Logo sua incoerência na implementação  imprimir  é utilizar  "máscara" de inteiro decimal (%d) invés de flutuante decimal (??).
     
    struct Pilha { int topo; float itens [MAXTAM]; }; *** int imprimir(struct Pilha *p){ int i= 0; for(i= 0;i <= p->topo; i++) printf("\n%??", (p->numero)[i]); return i; }  
     
  10. O post de mauro_b em Erro de variável, e como como posso adicionar uma lista ao finalizar? foi marcado como solução   
    @Battata
     
    Teve ideia de como armazenar os dados dos pedidos?
    #include<stdlib.h> #include<stdio.h> #include<locale.h> //tipo de dado tipo descritivo typedef int refeicao; typedef float reais; int main (void) { //declarar variaveis e inicializar com padrão refeicao quantidade= 0, item= 0; reais total= .0f; //permitir acentuação setlocale(LC_ALL, "Portuguese"); //menu de lanches; variavel ponteiro [indexavel] de tipo char e strings literais enum lanches {B_S= 0x0, CAB, I01, I02, I03, I04, I05, I06, I07, B_I};//constantes char *menu_lanches [0xA]= { [B_S]= " ___________________________________________________ \n", [CAB]= "| Item| Produto | Código | Preço Unitário |\n", [I01]= "| 1 | Cachorro-quente | 100 | 5,00 |\n", [I02]= "| 2 | X-Salada | 101 | 8,79 |\n", [I03]= "| 3 | X-Bacon | 102 | 9,99 |\n", [I04]= "| 4 | Misto | 103 | 6,89 |\n", [I05]= "| 5 | Salada | 104 | 4,80 |\n", [I06]= "| 6 | Água | 105 | 3,49 |\n", [I07]= "| 7 | Refrigerante | 106 | 4,99 |\n", [B_I]= "|_____|__________________|________|_________________|\n", }; //exibir menu printf("\n"); printf("%s", menu_lanches [B_S]); //borda superior printf("%s", menu_lanches [CAB]); //cabecalho printf("%s", menu_lanches [I01]); //item 01 printf("%s", menu_lanches [I02]); printf("%s", menu_lanches [I03]); printf("%s", menu_lanches [I04]); // ... printf("%s", menu_lanches [I05]); printf("%s", menu_lanches [I06]); printf("%s", menu_lanches [I07]); //item 07 printf("%s", menu_lanches [B_I]); //borda inferior //permitir escolha de varios itens while ((1 <= item) && (item <= 7)) { //escolha do pedido e quantidade printf("Escolha um item: "); scanf_s("%d", &item); //armazenar os dados dos pedidos [## COMO ???????] switch (CAB + item)  
    Cada refeição ou ‘item’ de 'menu' é um número inteiro entre 1 e 7, como armazenar um pedido? Pedido é a quantidade solicitada para de cada uma das refeições, se existe sete refeições como contabilizar separadamente cada um?
     
    Sugestão: use um vetor de refeição.
  11. O post de mauro_b em Números aleatórios em c foi marcado como solução   
    Boa Noite,
     
    Passar srand para corpo da main deveria ser o bastante, pelo menos no teste rápido aqui ocorreu como esperado, e no final a função ficou com essa cara,
     
    int sorteio (void) { return ((rand () % 30) + 1); }  
    Ainda assim, pode ter sorteios iguais (repetidos) isso é normal, é uma característica das funções randômicas repetir valores principalmente quando envolve aritmética modular.
     
    Se esse é o problema então esta discussão talvez ajude:
    "
     
  12. O post de mauro_b em Arrays com Funções - Não sei o que aconteceu no meu código foi marcado como solução   
    São nomes diferentes para um argumento. O argumento nesse exemplo é o endereço, na memória, do primeiro elementos da variável indexável (vetor) 'y'.
     
    int y[] = {0, 2, 3, 4}; test(int testt[]) --> int testt [] ^--------> é só outro nome para int *testt | +--------> test(y): test (int *tesst= y) ^-------------------= &(y[0]) +-------+-------+-------+-------+ y | 0 | 2 | 3 | 4 | ^ +-------+-------+-------+-------+ | ^ | | +-----+---> 0x100407000 | +------> &(y[0])= 0x100407000 | +------> &(y[1])= 0x100407004 | +------> &(y[2])= 0x100407008 | +------> &(y[3])= 0x10040700c  
  13. O post de mauro_b em Colocar duas casas decimais para apresentar o valor foi marcado como solução   
    🥺
     
    O meu nobre, você está no caminho certo, desde começo com 95% da resposta certa. 
    Apenas precisa dá um dos valores inicialmente para  variável menor, um ponta pé inicial para que as decisões de lógica (if) fiquem corretas.
     
    Acompanhe-me ... essa é uma cópia de sua programação, certinho ....
    #include <stdio.h> int main() { float menor,v1,v2,v3; printf("\n Valor 1: "); scanf("%f",&v1); printf("\n Valor 2: "); scanf("%f",&v2); printf("\n Valor 3: "); scanf("%f",&v3); if (v1 < menor) menor = v1; if (v2 < menor) menor = v2; if (v3 < menor) menor = v3; printf ("\n Menor valor : %.2f ",menor); printf("\n peco: [%.2f], [%.2f]", v1, v2); return 0; }  
    Bem ali, no topo está a checagem (v1 < menor) ... Daí eu te pergunto, quanto vale menor para ser já comparado com v1, qual o seu valor? Em algum momento deu um valor para  menor ? Isso meu querido... Se não dê inicialmente um valor para menor o computador não saberá as decisões restantes, mas assim mesmo ele faz e erradamente.
     
    Então qual é valor inicial para menor que ajuda o computador a toma as decisões certas? 
    Qualquer um dos três valores pode ser inicialmente passado para menor e ajudar o computador nas decisões certas, então vamos escolher o primeiro (v1).
    "
     
    Diga que menor, no topo das decisões, é igual a v1 e o computador decide o resto.
    #include <stdio.h> int main() { float menor,v1,v2,v3; printf("\n Valor 1: "); scanf("%f",&v1); printf("\n Valor 2: "); scanf("%f",&v2); printf("\n Valor 3: "); scanf("%f",&v3); menor = v1; // <--- menor agora tem o valor de v1 if (v2 < menor) menor = v2; if (v3 < menor) menor = v3; printf("\n Menor valor : %.2f ",menor); printf("\n peco: [%.2f], [%.2f]",v1,v2); return 0; }  
    Entendeu ??
    "
  14. O post de mauro_b em Coisas obsoletas/que deveriam ser evitadas em C foi marcado como solução   
    é, quem busca excelência encontra mais facilmente nas bibliotecas apropriadas.
     
    No exemplo citei Windows.h então quando importa ela esqueça stdio.h e todo o resto.
  15. O post de mauro_b em O terminador 0 de strings faz parte do seu tamanho? foi marcado como solução   
    @Lucca Rodrigues Isso mesmo, se a palavra ultrapassar os 39  o excedente vai para buffer
     
  16. O post de mauro_b em Trabalho da faculdade. Algoritmo em Linguagem C foi marcado como solução   
    Relativamente fácil!
     
    Eu não escrevi, só de cabeça já tenho uma solução simples para problema do professor João Messias.
    Precisei de uma matriz [20][10] respectivamente com 20 clientes x 10 notas por cliente, essa matriz é de uma estrutura para organizar os dados das notas.
    Cliente: Nota Valor [10], Cliente: Nome Cliente.  
    Quesito 1:
    Bastante aninhar as instruções de loop, preferencialmente FOR, percorrer a matriz linha x coluna para ler os dois dados do cadastro, simplesmente linear.
     
    Quesito 2:
    Escrevo um algoritmo\função que realize esse processo por cliente, cujo parâmetro é um vetor [10] com retorno da soma dos elementos do vetor. Agora é suficiente aninha a chamada dessa função a um loop de 0 à 9 para calcular o total de todos os clientes
     
    Quesito 3:
    Uso o a função do quesito 2.
     
    Quesito 4:
    Coloco tudo em um vetor de funções ou switch-case, aninho o menu em  um vetor de cstrings e chamo dentro da main.
     
     
     
     
  17. O post de mauro_b em erro em exercício funções em C foi marcado como solução   
    Precisou também de mudanças interna da função.
    #include <stdio.h> //Protótipo da funcção ReajSalNovo float ReajSalNovo(float salario); int main (void) { int k, i; float SalAntigo, SalNovo = 0; do{ printf("Digite um numero maior que 0 e menor que 11: "); scanf("%d", &k); } while ((k < 0) || (11 < k)); for(i=0; i < k; i++){ printf("Digite o valor do salario: "); scanf("%f", &SalAntigo); SalNovo = ReajSalNovo(SalAntigo); printf("Sal_antigo: %.2f\tSal_novo: %.2f\n",SalAntigo, SalNovo); } } float ReajSalNovo(float salario) { float sal_novo; //Condicionais que calculam o salário antigo com o reajuste para o sal_novo. if(salario < 800) { sal_novo = salario + salario * 0.15; }else if((salario >= 800) && (salario <= 1000)) { sal_novo = salario + salario * 0.10; }else { sal_novo = salario + salario * 0.05; } return (sal_novo); } Então funcionou ?
  18. O post de mauro_b em [Resolvido]Problema no grau do imc foi marcado como solução   
    (.) e não (,) para separar as frações
  19. O post de mauro_b em Exercicio em C - URI 1015 foi marcado como solução   
    @Lobarinhas Boa Dia !!
    Seu engano é fazer a Leitura dos pontos aos pares de coordenadas, pois no plano (esquema) A leitura Certa x y, x y e não x x, y y como você programa.
  20. O post de mauro_b em Conversão de numero natural para binário com recursão - C foi marcado como solução   
    Está certo? Isso é relativo por exemplo do ponto de vista do problema está certo. O que pode fazer é otimizar.
     
    Caso queira otimizar deixa saber que é possível enxugar seu programa atual para duas linhas de maneira que o return é completamente desnecessário.
    adicionado 2 minutos depois Pensem nisso.
    adicionado 4 minutos depois É uma maneira certa.
  21. O post de mauro_b em Looping infinito em programa em C foi marcado como solução   
    Remova as instruções for. Esta instrução vaga++ está em local errado, deixo pra você, encontre seu local lógico no programa.
  22. O post de mauro_b em Nao consigo decodificar código RN; foi marcado como solução   
    @emanuelrichard Bom dia.
     
     

    Se uma rotina é muito complexa então pense nas rotinas menores. 
     
    O rotina (em 4 etapas) da maneira como proponho fica complexa mesmo, fica mais complexa ainda quando tenta-se de uma só vez implementa-la. Para ter sucesso nesse caso é necessário dividir tudo em 3 partes e trabalhar com suas etapas individualmente. Não funcionou pra você.
     
    Vamos tentar do seu jeito! Entada+Processamento+Saída tudo de uma só vez. Então...
     
     
    1# A entrada do receber o Rn, a entrada não determinada de bits, o que sabemos é que a entradas param com -1. Seria que tamanho esse vetor? Como armazenar essas informações de bits sem largura fixa em C++?
     
    Exemplo.
    #include <iostream> #include <string> int main(void) { std::string bits (""); std::string plusbits (""); for (;;) { std::cin >>(bits); if (bits == "-1") break; plusbits = plusbits + bits; } std::cout <<(plusbits)<< std::endl; return 0; } Experimente entrar: 101 101 101 101 -1
     
     
     
     
  23. O post de mauro_b em Como criar um array de char infinito? foi marcado como solução   
    @LinsmarVital Boa Noite!
     
     
    Esse não é o maior número do mundo, mas é grande o bastante para não caber em um tipo primitivo. Acredito que ele (o professor) esteja sem razões para solicitar sua implementação. Fique tranquilo.
     
     
    Como disse, esse não é o maior inteiro já calculado. Para determina-lo seria necessário algumas implementações especificas e talvez outro membro apareça mais tarde para essa discussão.
     
     
    Qualquer x > 2147483647 cabe em tipos primitivos. Já quando se fala de qualquer x >>> 2147483647 (nas proximidades de 2277.232.917 – 1) então não é tão simples como fazer um bolo.
     
  24. O post de mauro_b em Código C: leia nomes de pessoas compostos por um prénome e sobrenome foi marcado como solução   
    Nós não queremos lhe dar a resposta, as vezes alguns membros mesmo assim dão na forma de algoritmo narrativo, descritivo ou pseudocódigo. Como eu estou sem tempo então não posso lhe ajudar com muita coisa.
     
    Percebo que o nome e o sobrenome são impressos separadamente no final, é o caso de lê na mesma técnica, ou seja, um de cada vez separadamente. Isso resume a leitura em 1 linha de código o que é muita coisa comparada a se fazer um "cabaré" por tão pouco.
     
    char nome[42]; // para salvar o primeiro nome char sobrenome[150]; // para salvar o segundo nome scanf (" %s%149[^\n]", nome, sobrenome); // ler nome printf ("%s, %s", nome, sobrenome); // exibir nome  
    Com relação a segunda parte, planeja a solução de como faria para resolver você mesmo e não com programação, nesse caso é você papel e caneta: como seu cérebro resolve isso. Depois aplique a linguagem e faça perguntas mais objetivas.
  25. O post de mauro_b em Jogo em C com matriz vetores foi marcado como solução   
    Letra d) Crie uma estrutura FOR que vai 1 até 6, dentro dessa estrutura crie outra igual. Na primeiro você coloca vetor de apostas, na segunda você coloca o gabarito, compare cada elemento do gabarito com um elemento do vetor de apostas. Notará que para cada aposta no vetor de apostas percorrera completamente o vetor com gabarito.
     
    Esse ciclo se realizará para cada vetor de aposta, ou seja, 6 vezes também. Pode usar os vetores separados de apostas ou a matriz de aposta já que são iguais em conteúdo e valor.
     
     
    Dica: Usar funções para separar os problemas e as soluções, uma estrutura também permite , além de melhorias de design, reaproveitamento de código que futuramente será cobrado.

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 Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

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