-
Posts
3.284 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Ansi C postou
-
@MarcoShadowbolt Em resposta à pergunta: quais valores são múltiplo de X? Se graficamente visualizasse a árvore buscaria cada um dos múltiplos de X ao arrastar os olhos por toda subárvore, ou filho esquerdo e direto; pegaria de cada filho/folha o seu valor para calcular o resto da divisão inteira por X com objetivo de saber se o resto da divisão é 0. tree * buscar (...); é um procedimento quase igual que com pouquíssima adaptação é suficiente para exibir todas as ocorrências de múltiplos de X. A parte recursiva é muito importante, pois é a lógica pela qual todos os filhos/folhas são acessados. Sugestão void exibir_multiplos_de (int x, tree *na_arvore) { if (NULL == na_arvore) return; /** Aqui tem sua decisão com declaracao que * escreve o valor SE multiplo de X */ exibir_multiplos_de (x, na_arvore->dir); exibir_multiplos_de (x, na_arvore->esq); return; } Entendo assim, agora complete..
-
Conectar o pc a um wifi diferente usando o celular
Ansi C respondeu ao tópico de Junilson80 em Redes e Internet
Conheço apenas um cenário em que isso é possível; nele o celular está conectado a rede telefone 5G via chip [conexão de dados móveis] roteando esse sinal para conectar outros dispositivos via Wi-Fi. Procedimento simples na maioria dos smartphone Android. -
C# Ler 60 idades e dividir em menores, maiores e idosos
Ansi C respondeu ao tópico de Silvio Daniel01 em C/C#/C++
@Silvio Daniel01 Precisa de somente um 'loop', e não dois para esse procedimento que decide a qual vetor de faixa etária a idade pertence: A cada ciclo uma idade é resolvida para qual vetor pertence, logo além de imprimir essa idade [dado] é necessário incrementado o contador [y, k ou w] do vetor [v1, v2 ou v3] de faixa etária no corpo da decisão [IF]. Exemplo: Se uma idade qualquer é menor ou igual a 18 anos, esta decisão é escolhida; imprimir, atribuir a idade ao vetor da faixa correspondente e contador nesse vetor cresce +1. Em seguida, se todo decerto, escreva outro procedimento para imprimir os vetores de faixa etária, separadamente. -
O @Andrielli , sua obrigação é identifica a sucessão de processos que estão escritos no enunciado, escrevê-los em 'portugol' para que o interpretado do pseudocódigo resolva o total para pagar na compra com desconto. Uma compra envolve saber o nome [texto], quantas unidades [inteiro] e o preço [real] de somente um produto. E é nessa ordem que os dados devem ser lidos [ler] e gravados na memória [variáveis]. Em seguinte o interpretado vai decidir quanto de desconto o comprador merece ao resolver numa estrutura de decisão [se] e expressão lógica. Qualquer expressão lógica envolve operadores condicionais e de comparação que são resolvidos na central de processamento lógico e retorna um valor booleano [1,0]. Quando retorna 1 significa que a condição na expressão é verdadeira, sendo assim o comprador merece o desconto na decisão. O desconto é uma operação matemática a parte, basta converter porcento [%] em fração de 1 e multiplicar pelo total. O procedimento que gera o abatimento está no corpo 'indentado' de cada decisão [se] conforme enunciado, e atribui o resultado da operação a variável desconto [real]. Por último, total - desconto e a única informação que o algoritmo escreve [escrever] na tela. Assunto para Estudar 1. Variáveis 2. Método Ler, e Escrever 3. Operadores Condicionais, e de Comparação 4. Declaração de Decisão [Se]
-
O @Yago Vuelma , Inicialmente não se preocupe com validação, só escreva o código capaz de capturar os membros numéricos de uma data qualquer. Tarefa essa que envolve variáveis básicas do tipo inteiro e captura de dados com a função mais normal de todas a função 'scanf'. Adiante comece a escrever o tratamento de dados que válida o dia com intervalo fechado a depender do mês. O mais obvio é que todos esses intervalos tem delimitadores maiores que 0, todo resto é mais específico e tais especificações devem ser traduzidas em Declarações de Decisão [IF-ELSE]. Sua maior preocupação será com delimitador superior da validação do dia, já que o inferior é sempre 1, e como sabes o 'variador' é o mês, por isso que dia depende de mês e essa estrutura de decisão se localiza primeiro nas decisões com relação ao dia. Então essa cascata de decisões começa no teste em que todos são inteiros [dia, mês e ano] positivos [> 0] e passa para o mês; cada mês tem seu intervalo de dias, exceto o mês fevereiro que tem 2 intervalos a depender do ano, daí use o cálculo de ano bissexto e incrementa o delimitador quando SIM, apenas calcule para o mês 2. Se todos [dia, mês] estão em seus intervalos então tem uma data válida. Acrescentar um dia a data atual não tem complicação, basta usar a validação de datas depois que incrementar, daí internamento o programa acusa data válida, e não. Pode acontecer que o dia seguinte caía num novo mês, ou novo ano. É sua obrigação tratar essa situação até que a data do dia seguinte se torne válida, use decisões. Assuntos para Estudar 1. Função scanf 2. Operadores Condicionas e de Comparação 3. Declaração Condicional [IF-ELSE, SWITCH-CASE]
-
Ôh @Duda VS, são algumas obrigações independentes e você começa por onde achar mais fácil. Geralmente começam com o roteiro básico da computação: entrada, processamento e saída, nessa ordem. Entrada No miolo da entrada do programa está uma função que é o meio para pegar informação. É enunciado que os dados passam por um processamento em que "apenas os dados lidos no intervalo [0, 100]" são considerados informações [válidos]. Assim sendo, precisa desse processamento escrito em C. Quando se fala de entrada de dados e processamento de informações em C os iniciantes localizam a função 'scanf': com uma 'string' no primeiro parâmetro certa regra(s) convertem uma sequência de caracteres da entrada para outras categorias de dados no programa para gravar em um local na memória que chamam de variável, e quase sempre isso é o suficiente para ter informação. Contudo, mesmo que um valor de um inteiro seja o dado na variável, ele precisa está no intervalo determinado no enunciado. Concluir que está no intervalo é uma decisão que o programa deve tomar antes de liberar como informação. Isso escrito em C, envolve instrução condicional [IF-ELSE] que depende da expressão que compara o dado obtido com os extremos do intervalo enunciado. Os operadores condicionais e de comparação são os operadores dessa expressão que ao ser resolvida pelo central de processamento lógico retorna um valor booleano [1, 0]. Todos esses procedimentos e outros indentados num bloco de código nomeado no espaço global chamam de função. Tudo que precisa saber para escrever essa função na entrada do programa foi citado de algum jeito. Os assuntos para estudar: 1. Função scanf 2. Operadores Condicionais e de Comparação 3. Declaração Condicional [IF-ELSE]
-
C Atribuir vetor em ponteiro de inteiro
Ansi C respondeu ao tópico de paulo luz magalhaes em C/C#/C++
O @paulo luz magalhaes revi o enunciado e notei que diz "um ponteiro", apesar de que acredito que isso não signifique somente "um ponteiro", porém que ponteiros devem ser usados. Se duvidar pergunte, Ok? -
C Atribuir vetor em ponteiro de inteiro
Ansi C respondeu ao tópico de paulo luz magalhaes em C/C#/C++
O @paulo luz magalhaes, um dos meus alunos respondeu, deixar seu exemplo desse ‘loop’ sugerido e que utilize os ponteiros. Sugestão #include <stdio.h> int main () { int i, vetorTeste [3]= {4, 7, 1}, *vetorInicio= vetorTeste, *vetorFim= &vetorTeste [2]; for (i = 0; i < 3; i++) { printf("O endereço do índice %d do vetor é %p\n", i, &vetorTeste [i]); printf("O valor do índice %d do vetor é %d\n", i, vetorTeste [i]); } /* inverta o vetor */ while (vetorInicio < vetorFim) { int aux= *vetorInicio; *vetorInicio= *vetorFim; *vetorFim= aux; ++ vetorInicio, -- vetorFim; } /*exibir resultado */ for (i= 0; i < 3; i++) printf("%p ", &vetorTeste [i]); printf ("\n"); for (i= 0; i < 3; i++) printf("%d ", vetorTeste [i]); printf ("\n"); return 0; } "É obvio que um tipo declarado não constante permite o incremento e decremento de seu valor, um ponteiro nada mais é que uma variável da categoria dos inteiros que guarda o endereço de outra [ou seja, uma referência]. Uma referência para o início de um vetor não pode ser maior ou igual à metade para fim, logo o início incrementa para centro e o fim decrementa enquanto INICIO é MENOR que FIM todos os endereços são de posições inversas." /* inverta o vetor */ while (vetorInicio < vetorFim) { int aux= *vetorInicio; *vetorInicio= *vetorFim; *vetorFim= aux; ++ vetorInicio, -- vetorFim; } Essa é uma boa sugestão, principalmente porque é de uma turminha de 6 - 10 anos. Espero ter inspirado você também. -
A categoria de variável [categoria de dados] da variável 'tr' é incomparável com tipo no vetor 'mediaAluno' como resultado há arredondamento de frações. Corrigido #include <stdio.h> int main (void){ int qtdDeAlunos= 0; printf ("%s", "Quantidade: "), scanf ("%d", &qtdDeAlunos); double mediaAluno [qtdDeAlunos], soma= 0.0, n1, n2, n3, n4; for (int a= 0; a < qtdDeAlunos; ++ a) { scanf ("%lf %lf %lf %lf", &n1, &n2, &n3, &n4); soma= n1 + n2 + n3 + n4; mediaAluno[a]= soma / 4.0; soma= 0.0; } printf("Notas (gerais): "); for (int a= 0; a < qtdDeAlunos; ++ a) { printf("[%.1f] ", mediaAluno [a]); } for (int i= 1; i < qtdDeAlunos; ++ i ) { for (int j= 0; j < qtdDeAlunos - 1; ++ j) { if (mediaAluno [j] > mediaAluno [j + 1]) { double tr= mediaAluno [j]; mediaAluno [j]= mediaAluno[j + 1]; mediaAluno [j + 1]= tr; } } } printf ("\n"); printf ("%s", "Notas (ordenadas): "); for (int a= 0; a < qtdDeAlunos; ++ a) { printf("[%.1f] ", mediaAluno [a]); } return 0; }
-
C Atribuir vetor em ponteiro de inteiro
Ansi C respondeu ao tópico de paulo luz magalhaes em C/C#/C++
Inverta os elementos tal que os primeiros elementos [valores] trocaram de posições, respectivamente, com os últimos. Existem duas maneiras usuais de fazer esse procedimento; na primeira se inverte a partir do início até o centro do vetor, que é interpretado como o marco 0 [tamanho/2] na reta das posições. A segunda maneira não interessa o centro porque usar uma cópia inversa do vetor para sobrescrever os elementos do vetor original, mas essa maneira envolve alocação dinâmica de memória e “loops” excessivos, logo é desinteressante. Escrever em C envolve recursos que você @paulo luz magalhaes em sua postagem apresentou conhecer bem. Lembre-se que o 'loop' tem o número [N] de ciclos, igual à metade [inteira] do vetor, como sabes a primeira metade troca de valor com a segunda, inversamente. Uma variável auxiliar simplifica a transição [troca] de valores entre as posições inversas. Primeiro troca com o Último Segundo troca com o Antepenúltimo ... -
Aceite que programação de computadores não é a solução, mas, é uma modelo de resposta [para muitos dados] de uma solução. Exemplo: Na minha prática, a "molecada" tem compreensão tabulação de dados a partir do fundamental 1 [4 ano]e as soluções são construídas mentalmente e depois a linguagem [C] vem de substitutiva as práticas comuns que usavam papel, lápis e borracha na aprendizagem por repetição [geral], ou seja; primeiro resolvem o problema depois repete os processos usando os recursos semelhantes que existem na linguagem 'substituindo' o velho papel e lápis, como tem que ser atualmente. Nesse momento importante, tem-se para sua compreensão; aulas gravadas [pelo professor] e anotações [do professor]. (Se ele tem uma câmera no fim da sala para aqueles 50% que não veem as presenciais) Solicite essas aulas de Física, [Computação, matemática] pelo menos um deles, é bom professor e deste sempre gravou suas aulas, aproposito se hoje todos tem assista de todos. É importante que se sinta a vontade com as aulas, caso não então busque revisar com outros professores aleatórios e em vídeo até que encontre um que goste muito. Depois de uma Boa Revisão você mesmo será capaz de usar os saberes acumulados e fazer as associações sem muita ajuda, afinal de conta você frequentou as aulas, fez anotações e claro que uma avaliação aconteceu [ou vai acontecer] então você já tem, antes disto, todo um contexto para construir uma compreensão.
-
C nessa parte da aresta 5 => 6 que acho q ta errado o emergente deveria ta em 5
Ansi C respondeu ao tópico de joaovitorm102 em C/C#/C++
Sim, no comentário diz ser aresta simétrica <v ↔ w> dos vértices 5 e 6 -
É meio que óbvio... O separador na instrução de fluxo e controle de iterações FOR não é vírgula, mas, sim ponto-virgula e atribuição de valor para variável é com 1 sinal de =, 2 somente para comparação de igual.
-
Há um ponto-virgula no fim da instrução de seleção IF (num%i==0); que define resposta nula. Remova-o e depois teste.
-
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
-
Pense no tamanho por intervalo [numérico] notará que 'int' é muito maior que o necessário, isso significa que o menor array possível não é de tipo 'int', o melhor tipo nesse intervalo nas condições apresentadas é 'char'.
-
C meu programa esta dando tempo limite excedido, não estou conseguindo resolver!
Ansi C respondeu ao tópico de Mateus Pereira Araujo em C/C#/C++
A instrução 'switch' não importa, entendo que a condição de “loop” nas entradas de dados é suficiente. #include <stdio.h> #include <stdlib.h> #include <limits.h> /* INT_MAX */ int main (void){ //definir variaveis da funcao int ano= 0, ano_mais_novo= INT_MAX, qtd_de_carros= 0; float vel= 0, vel_maior= 0, soma_das_vel= 0; char caractere= '\0'; scanf (" %c", &caractere); while ((caractere != 'n') && (caractere != 'N')){ scanf(" %d%f", &ano, &vel); if (vel > vel_maior) vel_maior= vel; if (ano < ano_mais_novo) ano_mais_novo= ano; soma_das_vel= soma_das_vel + vel; ++ qtd_de_carros; scanf(" %c", &caractere); } printf ("%s", "zero\n"); ... } -
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.
-
'\0' é Código escape para caractere nulo, ou mais simplesmente; zero. Toda sequência de "char" é uma ‘strings’ se termina com 0, daí a função que opera “strings” finaliza o processo quando encontra esse caractere, que foi adicionado no final delas durante sua gravação.
-
O relacionamento com usuário pergunta a origem e o destino [que um ponto, par ordenado ou célula da tabela [matriz]]. Exemplo usual: Coordenada_Cartesiano origem= 0, destino= 0; printf ("%s", "Ola! Sou o assistente do programa, estou aqui para auxilar em sua viagem. \n" "Por favor, diga-me um inteiro de [1 a 24] para o origem, em seguinda dê um espaco \n" "e diga o outro de [1 a 24] para destino ..: "), scanf ("%d%d", &origem, &destino); Distancia_KM percorridos= distancias [origem][destino]; /* [Loop de Destinos] * Logo o auxilia tem a distancia para a primeiro viagem, isso significa também que um * um loop de novos destinos pode comecar e desse modo o destino anterior torna-se a * origem de um o novo destino e acrescenta a percorridos, e quando, não finaliza o loop. */ printf ("%s%f%s%d%s%d%s", "Fim da trajetoria e com isso ...\n" "A viagem completa tem ", percorridos, " KM de ", origem, " Ate ", destino, "\n");
-
C Ideias de programas para C que não sejam jogos
Ansi C respondeu ao tópico de linco_araujo12 em C/C#/C++
Para ser levado a sério é preciso ter maior precisão senão até mesmo "Escreva um código que transforma teu computador caseiro em uma máquina do tempo." [ Bazinga], figura aqui como uma boa ideia de programa em C que não é um jogo e vale tanto quanto, ou mais que FB. -
C Funções fflush, _flushall, _fflush_nolock
Ansi C respondeu ao tópico de Luccas Fernando em C/C#/C++
Sim, porque é coerente com a mais presente das ações no procedimento; excluir [limpar/esvaziar] algo supérfluos na memória temporária ['buffer']. 'Flushing', é uma tática do caçador para forçar uma caça a sair de seu esconderijo, entende-se aqui que 'flush', é uma função da 'buffer' para forçar o tratamento dos dados nele contidos, esvazia ou liberar. -
C alguém pode me ajudar com estes exercícios
Ansi C respondeu ao tópico de fernando00459 em C/C#/C++
A estratégia mais segura nessa (categoria) de atividade é dividir o grupo de estudos, e cada subgrupo resolve um problema; mas quando se está sozinho, começa e questiona [Filosofia]. Por exemplo: "Leia o arquivo de dados 'dados1.txt' fornecido." Questione: Que função/método [da biblioteca padrão] captura informação com origem num fluxo de caracteres de uma arquivo do tipo texto? [R: fscanf]. Veja como é fácil... agora é sua vez. -
Reforçando: Para mostrar cada fração em termos simples o enunciado escolheu percentual [partes por cem] ao invés de [A+B+C] ou outra. As frações de 100 [%] são normais na representação de partes, divisões de conversão fácil e usual: [[1/2] * 100]% = 50%, o símbolo [%] representa *1/100, ergo; 50% = 50*1/100 = 1/2 = [[1/2] * 100]%
-
void concatena(char *str1, char *str2); Esse "jeitinho" é só mais um entre outros, em especial, é o que seu "empregador" precisa e o único que importa: str1 será a soma das parcelas [str1, str2] e para operação bem sucedida o conjunto str1 precisa de no mínimo capacidade extra igual str2. Outro protótipo. void concatena(char *str1, const char *str2); O 'const' é a indicação [prévia] de que somente a primeira parcela [str1] sofrerá mudança. Nesse procedimento [igual ao anterior] não é necessário o retorno de str1. No corpo do método há cópia em str1 de str2 ou, no final do procedimento, antes onde str1 terminava agora há str2. Logo se diz que: str1 concatena com str2.
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