Ir ao conteúdo

Ansi C

Membro Pleno
  • Posts

    3.284
  • Cadastrado em

  • Última visita

Tudo que Ansi C postou

  1. @skyneGKL As informações na matriz(6, 6) me parecem irracionais, eu não consegui encontrar significado. E mais, as postagens posteriores não foram o suficiente para ajudar na minha interpretação, também. Resta seu algoritmo. O nome adequado do vetor é cidades .cada valor no elemento/subscrito dele é uma cidade, cada par de valor é o índice no subscrito da matriz que representa a distância entre elas. Dessa maneira. Cada valor em 'distancias' é uma distância acessível por um par de cidades. A trajetória percorrida é a soma das distâncias entre cada cidade do vetor cidades. O laço se repete 5 vezes acumulando 5 valores de distância. Filézinho! Pode acontecer uma variação de resposta em que a matriz real e lógica diferem em composição para coincidir os índices sem operações extras, ou seja, o índice 1 da matriz real é também o índice 1 da lógica, apenas para evitar operações aritméticas de adaptação. int distancias[][7] = { {0, 0, 0, 0, 0, 0, 0}, {0, 1, 2, 3, 4, 5, 6}, {0, 1, 2, 3, 4, 5, 6}, {0, 1, 2, 3, 4, 5, 6}, {0, 1, 2, 3, 4, 5, 6}, {0, 1, 2, 3, 4, 5, 6}, {0, 1, 2, 3, 4, 5, 6}, }; Uma linha e uma coluna extra ignorada para satisfazer a condição de não adaptar os índices do vetor cidades. Do contrário, terão que ser adaptados os índices do vetor durante entrada, na composição de vetores em C. Índice: 0 1 2 3 4 5 Cidade: 2 3 1 4 5 0 []
  2. Se o enunciado pede que comunique com o usuário com mensagem do tipo Digitar/Entrar com x números, nós escrevemos. Quando enuncia Leia ou Ler, escreve-se mensagem apenas de resposta ou resultado ou retorno, ou saída e de entrada é facultativo. E esse é o caso: é só ler, não é Digitar ou Entrar, então sem mensagem na categoria de Apenas deixe o programa esperando os dados, sem avisar, e depois copie os 20 números e em seguida cole no prompt. A alternativa é redirecionar o fluxo de entrada por linha de comando usando a combinação: nome_do_programa < numeros_do_teste.dat Ilustração É um programa que lê e imprime os números até o fim da lista depois encerra. Encerra porque quando a função encontra o fim do fluxo (fim do arquivo) o valor em número é 0 terminado o laço. #include <stdio.h> int main( ){ int numero = 0; while (scanf( "%d", &numero ), numero != 0 ) { printf( "%d ", numero ); numero = 0; } return 0; } Essa lista: 65 96 15 10 26 15 69 25 59 62 04 21 74 21 71 68 53 50 67 31 94 51 30 63 79 53 76 13 72 34 85 68 34 72 47 24 31 25 55 Indiretamente isso ajuda a entender melhor sua entrada de dados. Vejamos: Precisa de um contador para saber quantos números já pegou e não está além da capacidade do vetor e verificar também se valor em número é menor que 1 (negativo ou zero) então se pelo menos um desses casos se confirmar o ‘loop’ WHILE é interrompido. []
  3. 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. Com relação à saída, cada o programa deve imprimir UMA linha. Esse comando aqui, imprime duas linhas, a segunda tem o ENTER ('\n')
  5. Penso que se contar quantos campos estão preenchidos poderia usar a métrica no SWITCH e resolve seu problema. function progressBarInq( ){ let progressBar0 = document.getElementById( "InqProgress0" ); let progressBar25 = document.getElementById( "InqProgress25" ); let progressBar50 = document.getElementById( "InqProgress50" ); let progressBar75 = document.getElementById( "InqProgress75" ); let progressBar100 = document.getElementById( "InqProgress100" ); let verInq01 = document.getElementById( "InqueritoCircunscricaoPolicial" ); let verInq02 = document.getElementById( "NumeroDoIP" ); let verInq03 = document.getElementById( "DataDoRelatorio" ); let verInq04 = document.getElementById( "NumeroDoProcesso" ); progressBar0.style.display = "none"; progressBar25.style.display = "none"; progressBar50.style.display = "none"; progressBar75.style.display = "none"; progressBar100.style.display = "none"; var status = 0; if (verInq01.value) status = status + 1; if (verInq02.value) status = status + 1; if (verInq03.value) status = status + 1; if (verInq04.value) status = status + 1; switch (status) { case 4: progressBar100.style.display = "block"; break; case 3: progressBar75.style.display = "block"; break; case 2: progressBar50.style.display = "block"; break; case 1: progressBar25.style.display = "block"; break; default: progressBar0.style.display = "block"; break; } } progressBarInq( );
  6. Concordo e não deixaria de concordar porque sei que o problema do sinal e todo mais é confuso para maioria que está só começando. E sei também que isso não dura, depois de algumas horas, semanas ou meses em contado com a linguagem eles compreendem. [] Pois é: não tem.... Compare essa série do enunciado com isso que eu mostrei Na primeira imagem temos a lista (5) dos termos do polinômio de Mclaurin Na segunda imagem vem polinômio semelhante, qual a diferença? O termo n = 0, está resolvido e o limite finito. Simplificando para perceber que da série os 4 primeiros termos agora terá o seguinte aspecto ; nota-se que o sinal varia junta a constante x^2 O primeiro é -x^2 O segundo é O primeiro (vezes) -x^2 ... A pergunta do sinal tem uma resposta salvando a potência anterior. 4: +(x^8) <-- -(x^6) * -(x^2) ^ -----------| | 3: -(x^6) <-- +(x^4) * -(x^2) ^ -----------| | 2: +(x^4) <-- -(x^2) * -(x^2) ^ -----------| | 1: -(x^2) <-- (1) * -(x^2) @arfneto Post #10 compartilha uma codificação de exemplo, nela a alternância do sinal é feita por outra expressão, precisamente por uma variável equivalente à expressão (-1)^n do polinômio
  7. Pode dividir? A idade dividida por 16 será igual 1 ou maior se tem valor igual ou maior que 16. A idade dividida por 18 será igual 1 ou maior se tem valor igual ou maior que 18. Estamos interessando nos casos em que o quociente é 1 == para 16 Estamos interessando nos casos em que o quociente é 1 <= para 18 var idade_do_cidadao = 17; if (1 == ((idade_do_cidadao/16)|0)) { console.log("Seu voto é opcional"); } if (1 <= ((idade_do_cidadao/18)|0)) { console.log("Você é obrigado a votar"); } Como ainda estou aprendo, pode ser que tenha codificado algo errado. [ ] sorry.
  8. Sim, esse é o modo bom de avisar. Saberia no ato que (valor) subscrito não é array, consequentemente o segundo subscritor é o errado. []
  9. Não é o mesmo que tem aqui na imagem? Tem.. 1. Aqui 2. Aqui 3. Aqui @Victor Hugo Barbosa Silva Tudo do mesmo usuário! Quatro (4x) vezes para nunca esquecer, ou dizer que ninguém avisou. []
  10. Concordo! Vejamos no esquema. 4: (x^8) <-- (x^6) * (x^2) ^ -----------| | 3: (x^6) <-- (x^4) * (x^2) ^ -----------| | 2: (x^4) <-- (x^2) * (x^2) ^ -----------| | 1: (x^2) <-- (1) * (x^2) O primeiro termo é - quadro de x, os termos seguintes são o produto do anterior pelo - quadrado de x. Tem o x^2, só não salvou a potência anterior. E o x^2 agora divide x? Arrisco-me a dizer um compilador otimiza para (1/x), de qualquer modo não foi o que você disse. A pergunta do sinal tem a resposta salvando a potência anterior, também! 4: +(x^8) <-- -(x^6) * -(x^2) ^ -----------| | 3: -(x^6) <-- +(x^4) * -(x^2) ^ -----------| | 2: +(x^4) <-- -(x^2) * -(x^2) ^ -----------| | 1: -(x^2) <-- (1) * -(x^2) O algoritmo entendido, inclusive por você, tem x CONSTANTE. Se insistir nessa solução, guarde a potência anterior, escreva um ‘loop’ de 1 até 4, depois gradualmente suba os limites porque já entendeu que os fatoriais crescem rápido. []
  11. @skyneGKL Qual a dúvida?
  12. Não codifique (ler, calcular) em único ‘loop’ ou entrará em contradição, em específico, com a sua exigência de vetor. Use 2 laços, sendo o máximo prenunciado, para ler (dados) e calcular (totais) As alíneas a) e b) estão relacionadas por condicional IF, ou seja, quando é homem: acumula a quantidade de homens, quando não: usa outra condicional para verificar se é menor de 19 anos, se verdadeiro acumula a quantidade mulheres menores de 19 anos. Por último, c) que consiste na soma das idades sem restrição. Após o ‘loop’, tem os totais para as expressões: percentual de mulheres e idade média do grupo. []
  13. Tirei seu algoritmo para perguntar o que acontece com valor na 'soma' depois da expressão? Ou seja, a soma é a 'soma'! Meu palpite é que esquece de reiniciar a 'soma' a cada média, depois da expressão. media = (soma / disciplinas); soma = 0; //! atribuição 0 para não combinar com que vem depois. Tendo somente essas informações, qualquer um diria o mesmo. []
  14. Também acho que um projeto desse e estrutura de dados abstrato seja demais para iniciantes. Vai dá um nó em sua cabeça.
  15. 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] []
  16. Oi! Que é você? Já no comecinho conclui que codificou um programa particular, ou seja, outras pessoas terão dificuldade para entender Geralmente, se o nome da "coisa" é contraída sobre 1 até 4 letras fica obrigatório em seguida vir um comentário, principalmente se pretende levar a "coisa" ao conhecimento de outros. #define NMF (0x0) /**< Numero maximo de filmes, é o subscrito comum nos parametros formais tocante ao ponteiro para filmes das funcoes relacionadas a matriz */ Não é possível determinar qual é a pergunta e a resposta dessa função, pelo menos não a primeira vista. Suponho que a função recebe um vetor de ‘strings’ e responda com uma lista (endereço de variável de dados abstratos), mas o enunciado não fala nada sobre TAD. Só com o cabeçalho da função não é fácil determinar, em todo caso comente. /** @brief Breve descricao da funcao * * Descricao mais completa e pode incluir alguns fatos que relaciona * o algoritmo a outras funcoes do codigo, e de que mode estão ligadas quando houver * fique a vontade para escrever. * * @bug - Alerte outros programadores com relação falhas ou mal uso da funcao. * @param filmes - Explique o parametro formal, mesmo os mais obvios e seja breve. * @return void * - Fale sobre o tipo de retorno e ao que se destina. */ void *lista_filmes( char filmes[id/* coloque meu nome completo aqui */][50] ); Turno exibição? Exibição do turno? Se é exibir turno então a função imprime na tela os valores no vetor. Comente assim também, numa versão mais curtinha. /** @brief Exibir turno no prompt. */ int turno_exibicao( int turno[]/**< [in] e o parametro que ... */); Em penso que apresentação do trabalho fica mais bonita quando comentada. Ishh!!! Melhor evitar discussões e esvaziar a memória desnecessária no buffer de entrada de outras maneiras. A variável n é o limite do laço/'loop' e com a chamada de getc modificaria seu valor rompendo a lógica completamente. O que será que tem mais abaixo? []
  17. Se alguém me perguntasse qual é a parte mais fácil do exercício, diria ser essa... obter 15 números aleatórios é a mais fácil, basta bater com a cabeça no teclado 15 vezes e pronto! p.ex: 13 57 98 10201 387 623 15703 12 7530 23 8539 6 32 777567 5731 As respostas em cada alínea é obtida iterando sobre o vetor, com isso a maneira esperta para resolver inclui codificar tudo em único laço/'loop'. A exceção é o quesito e) o qual será calculado fora do laço e depende da soma dos valores, resolvido na alínea b). Essa é uma dúvida antiga aqui no fórum, fazia é tempo que não retornavam que ela. []
  18. A princípio não ter a função enunciada. Vejamos: A extensão do arquivo.dat: não deu indicação precisa de formatação, podendo ser dados binários ou texto. Decerto se sabe que: os valores necessários para definir o tamanho da matriz e alocar memória estão linearmente localizadas antes dos valores da matriz. Logo os exemplos teriam que começar com as dimensões da matriz, antes de seus valores. A estratégia que consiste na implementação de qualquer algoritmo de função inicialmente dentro da int main parece confortável, mas quando chegar o momento de migra-lo para sua função de acordo é possível que tenha mais trabalho para adaptar aos parâmetros formais. Comente as expressões com chamadas a funções que ainda não foram definidas, reserve a principal (int main) para testar uma função de cada vez enquanto não tem todas, após completar a coleção de funções necessárias ao programa, redefina ela para como era antes. As funções são independentes, e a obrigação delas é dar uma resposta (saída) conforme a informação (entrada). []
  19. Sim, e por essa razão que foquei minha atenção unicamente na falha e não em uma solução, já que existe em tua postagem as correções do problema, em específico. Vejamos: A correção começou na categoria de dados da variável nome, seu tipo agora é char [30], um arranjo unidimensional ou simplesmente vetor que nesse contexto conhecemos por 'strings' com capacidade para 29 letras/caracteres (não nulos). Atenção aqui para não haver mal-entendido! Antes da correção havia o especificador de conversão (ou só especificador) para tipo inteiro (int) na formatação decimal. Com a correção se aplicou o especificador de conversão certo para o dado correto dentro da ‘string’ de formato. ,Poderia ter ido mais além e especificado sua capacidade, e ficaria assim: printf("\nEntre com o nome: "); scanf(" %29s", nome); Ambos os modos estão certos. E não esquece de aplicar a correção também a formatação para função printf ... Antes Depois Isso são algumas das coisas que o autor da dúvida predente perceber. []
  20. Algumas declarações de variáveis do tipo int, quase normais a exceção é identificador nome da variável que transmitiu intenção diferente de sua categoria de dados (número). Um compilador não acusaria erros ou alerta de sintaxe. Pois, a variável nome é do tipo número inteiro e o especificador, na “string” de conversão de dados, na função scanf é compatível com tipo número inteiro (de base 10). "Filezinho da Perdigão" SQNAO! Concordando com... No instante que envia ao programa seu nome que difere de número, a função scanf esperando por dígitos ((- +)1234567890) recusa o fluxo de caracteres ao decidir que primeiro (v) é letra e não número inteiro (decimal). A falha se repete de cima para abaixo durante todo laço/"loop" porque (v) é sempre recusado. []
  21. Ansi C

    C playlist em linguagem c

    Ele não coloca, e não queremos que o programa mova a ordem em que foram cadastradas. O interessante é que fiquem sempre nessa ordem enquanto durar o programa porque os índices, que são as posições de cada música no arranjo musicas, serão uteis para cadastrar (preencher) o arranjo playlist, e assim estabelecer relacionamento índice das músicas com valores na playlist. Resumindo: Os valores nos elementos do arranjo playlist são os números das posições das músicas prediletas do usuário no arranjo musicas. *A ordenação escolhida pelo usuário foi: 3, 1, 2 Essa é a ordem em que se acessa as Músicas e Tempos no Cadastro quando precisar exibir a playlist. Com matrizes, do mesmo modo que fará com músicas. A "operação" de relacionamento é como playlist. Percebo que está gradualmente se livrando do pensamento linear, e o caminho é esse mesmo. O objetivo não é visualizar o código todo, mais sim, as partes que completam o código, essas partes são as funções e cada função é um sub-solução independente das outras. Isso significa que poderia escolher qualquer das enunciadas e começar, para tanto forneça a informação que ela precisa para produzir sua resposta. Comece pelo começo, qual é a entrada da função cadastrar (o que ele tem eu seus parâmetros formais)? Qual é a saída (qual a resposta que a função vos dá)? Com essas perguntas se começa a pensar o algoritmo da função cadastrar []
  22. Ansi C

    C Algoritmo em linguagem c

    Olá! Você @casa1 decidiu colocar arranjos no problema para manipular esse categoria dados na solução? Vejamos: Inclui a biblioteca stdlib mais desistiu de recorrer à mesma. Teve uma intenção de alocar matriz dinamicamente ou apenas foi para adicionar aquela "paradinha" no final do programa com a chamada da system( "PAUSE" ) ? De qualquer modo quando não é necessária então apague-a. Defina as variáveis com valor padrão durante a declaração inicializando com valor 0. Suponho que sal é o arranjo de salários, e que foi identificado com três inicias já pensado no trabalho que teria para escrever o nome salarios em outras partes do código. O mesmo para o arranjo id que é identidades, posiMenor e posiMaior não estão tão ruins quanto as outras, mas melhor se fossem: posicaoMenor, posicaoMaior. Eu até entendo as distrações que levam aos constantes erros quando os nomes passam de 10 caracteres, mas não concordo. O arranjo sal , vulgo salários, penso que é interessante se de tipos float, sabendo que seus valores são dinheiros desse modo ficaria mais consistente que de tipo inteiro. E por falar em consistência... por que desistiu ou nem se quer pensou que sexo poderia ser sexos, ou seja, um arranjo e assim teria a trinca da base de cadastro: float salarios[TAM]; int idades[TAM]; char sexos[TAM]; E o porquê dessa variável i? Sendo consistente, já que é um exercício de arranjos implemente com sexos. Como assim... Certo... existe fracões de habitantes? Sim, porém não fariam parte desse senso. E mais uma vez, uma variável interna contraída em uma letra. A ironia é que na notação húngara Int é a letra n . nQuantidade, nColuna *Coluna no singular, o plural reservo as variáveis de arranjo (array). Na expressão condicional o valor de i é convertido implicitamente para tipo float. E não precisa acontecer nesse contexto, basta trocar a categoria de dado de n para tipo inteiro. Existe um processo chamado refatoração de código, basicamente é um estudo do código objetivando melhorar sua estrutura interna sem afetar o comportamento externo do programa, porém aqui talvez melhore de 2 maneiras fazendo esse programa ler os dados juntos em único “loop”. Concordando com... Entendi que nessa lógica veríamos a utilidade da variável posiMenor no subscrito de arranjo id. Ainda que seja mais esperto usar uma variável do mesmo tipo que há no arranjo, principalmente se são fundamentais, determinar o menor valor indexando nos dois lados da expressão condicional traria mais utilidade para o vetor. Contudo, desse jeito funciona. for (i = 0 ; i < n ; i++) ... if (id[ i ] < menor) ... Para alguns, o vácuo entre os operandos e operadores diminui a legibilidade das expressões, eu não concordo. O especificador na função scanf captura no mínimo 2 char (2 caracteres), isso significa que será gravado além da variável sexo que é de tipo char (1 caractere) Precisamente, gravará 0 na memória da quantidade (quantM), pois ela está em seguida no bloco de memória, mas pode ser que isso mude, em todo caso gravará além da sexo. []
  23. Oi! Qual a dificuldade? Deixou para última hora? Se está difícil é porque precisa estudar com seriedade ou por mais tempo. Na ordem: 1. Faça um pseudocódigo 2. e seu respectivo programa em linguagem C Então qual foi a pseudolinguagem escolhida para escrever o pseudocódigo? Portugol https://portugol-webstudio.cubos.io/ Faça um tentativa sincera porque difícil foi definir a linguagem, agora é só usá-la. Até mais.
  24. cores é um tipo matriz e seu nome é também o endereço do seu primeiro elemento. ptr_s = lapis[i].cores; printf("Cor: %s\n\n", ptr_s);
  25. Ansi C

    C playlist em linguagem c

    "Missão dada é missão cumprida" Contemplando o máximo de quesitos sem intromissão de novos assuntos, e suponha que essa é sua vontade. Até onde sei, o que tem em teu código, é o que precisa: matrizes e funções. E a biblioteca padrão para produzir uma solução console, claro! Basicamente, preencher, buscar, exibir valores em matriz e tem a lógica de relacionamento por índice. Operações usuais sobre matriz. 1. Eu presumo que existam 3 procedimentos fora desse bloco de código: cadastrar músicas, inserir gênero e tempo. Funções além das destacadas no enunciado. O que se faz para 3, se faz para 30 mi. Músicas, então precisamos de lista não muito acima dos 3 itens. TRUE! Entenda que não querem a lógica (toda) dentro da int main sobrecarregando essa função, não mais!

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!