Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.236
  • Cadastrado em

  • Última visita

  1. Olá @Ray12 O Problema Faça um programa que receba do usuário um vetor com 10 posições, em seguida deverá ser impresso o maior e o menor elemento do vetor. O dado é um vetor (com 10 posições) *"Entre com 10 números ..."; e não até 10 números. O programa não cede enquanto não obter/receber/ler o vetor, e somente o vetor. printf ("%s","Entre com 10 números decimais (separe-os com a Enter ou a Espaço): "); Por exemplo. #include <stdio.h> int main (void){ int C[10], i= 0; printf ("%s","Entre com 10 números (separe-os com a Enter ou a Espaço): "); for ( ; i<10; i++){ int c= getchar (); if (EOF==c) { perror ("Falha na leitura"); return 1; } if ('\n'==c) printf ("%2d%c",i+ 1,'>'); else ungetc (c,stdin); c= scanf("%d",&C[i]); if (1==c) continue; while ('\n'!=(c= getchar ()) && EOF!=c); ungetc ('\n',stdin); --i; } /* ... */ return 0; } Suponho que o dado é vetor, somente ele satisfaz.
  2. Não! — Expressamos a checagem e adaptamos um laço de repetição. Assuma que o primeiro elemento é o menor e continue no laço. Por exemplo C'11 - gcc'11.4 #include <stdio.h> int main (void){ float numeros[]= {1,2,3,10,-1200,0.12}; float menor= numeros[0]; for (size_t i= 1 ; i<sizeof numeros/ sizeof(*numeros) ; ++i) if (numeros[i]<menor) menor= numeros[i]; printf ("%s%.1f%c","O menor número é: ",menor,'\n'); return 0; }
  3. Olá! O Problema Tem-se um conjunto de dados contendo a altura e o sexo (masculino, feminino) de N pessoas. Faça um algoritmo que calcule e escreva: a) A maior altura entre os homens; b) A média de altura das mulheres. Uma análise Supostamente, nada se conhece das informações, além de dado e formato de dado. Daí ... É pouco ou quase nada racional solicitar a quantidade de homens. Imagine que os dados são uma corda composta de altura e sexo. Sabidamente, as cordas terminam em 0 ('\0'). ***Note os verbos: calcular e escrever Assuma que não é implícito carregar, ler ou solicitar, porque aqueles dados já existem no sistema. Suponha que numa corda #include <stdio.h> int main (void){ char dados[]= {"160 feminino 175 masculino 150 masculino 165 feminino"}; /* ... */ return 0; }
  4. Olá O Problema 1 vetor com 04 elementos; O programa necessita encontrar o maior e o menor elemento do vetor; Aplicar a função recursiva e imprimir os números entre o maior e menor número encontrado (em ordem decrescente). ***A suposta tentativa de solução é distante do problema. Comecei pelo vetor; ele supostamente existe — não há indicação de carregar, solicitar ou ler os seus 4 elementos. #include <stdio.h> int main (void){ int vetor [4]= {1,3,2,4}; ... return 0; } Daí, assuma-se o primeiro elemento, sendo maior e menor, e continua num laço. #include <stdio.h> int main (void){ int vetor [4]= {1,3,2,4} ,menor ,maior; maior= menor= vetor[0]; for (int i= 1 ; i<4 ; ++i) if (vetor[i]>maior) maior= vetor[i]; else if (vetor[i]<menor) menor= vetor[i]; /* ... */ return 0; } @Luan Nicoluzzi ***Confundiu histórias quando imprime ou solicita cada dado no laço.
  5. Olá! O Problema Faça um programa que leia um valor N e crie dinamicamente um vetor de N elementos e informe a média, o maior e o menor dos valores fornecidos pelo usuário. Além disso, antes de finalizar o programa, deve-se liberar a área de memória alocada. Uma análise. Supostamente, N≥0, porque é quantia de elementos, tratando-se de leitura (Ler), o programa não segue e não finaliza enquanto não ler N. Tua expressão é mais para solicitar que leia (no caso do teclado), porque não se checa a N<0 para quantidade de elemento. Abaixo expresso, o que para mim é um ler N. while (q<0) { printf ("%c%s",'\r',"Entre com a quantidade de elementos: "); int c= getchar (); if (EOF==c) { perror ("Abortar quantidade de elementos"); return 1; } if ('\n'==c) continue; ungetc (c,stdin); scanf ("%d",&q); while ('\n'!=(c= getchar ()) && EOF!=c); } O fluxo não cederá enquanto N<0; ele repetirá a leitura do decimal. Ate que... depois Nada disso, não é — supostamente — uma solicitação. Mas, sim, leituras! ***O fundamento é mesmo, não ceder até ler N dados, e incrementar somente depois de testar a leitura (Ler 1 de N).
  6. Precisa não, tu queres (...) que, após digitalização dum número (especificamente decimal), cheque-o para negativos e ignore-o. /* Asuma que 0 é positivo, e neutro */ if (decimal<0) continue; if (decimal>maior) maior= decimal; if (decimal<menor) menor= decimal; ou /* Asuma que 0 é positivo, e neutro */ if (decimal>-1) { if (decimal>maior) maior= decimal; if (decimal<menor) menor= decimal; } Notei Qual é valor na `num` ? — Arbitrário, ele é logicamente errado. ***Resolve-se com maior e menor iguais ao primeiro valor da lista, numa primeira leitura que está fora do laço. Ou inicializar após checagens durante o laço. char flag= 1; do { printf ("\rNumero : "); scanf ("%i",&num); if (0>num) continue; if (flag) maior= menor= num , flag= 0; if (num>maior) maior= num; if (num<menor) menor= num; } while (num)/* stop 0 */; ***Um deles é insinuar o desejo de ignorar os números negativos enquanto o laço continua para os positivos. Enfim, algos assimn, para mim, já é bom! C'11 - gcc '11.4 #include <stdio.h> int main (){ int maior ,menor ,num= 1; char flag= 1; do { printf ("\rNumero : "); num= -1; scanf ("%i",&num); if (0>num) continue; if (flag) maior= menor= num , flag= 0; if (num>maior) maior= num; if (num<menor) menor= num; } while (-1<num)/* stop ... ,-1 */; putchar ('\n'); printf ("%s%d%c%d%c","O menor e o maior número é: ",menor,' ',maior,'\n'); return 0; } — Okey ??
  7. @immoraesz Olá ***Se o valor atual `num` é maior, ou menor, então, atualizam-se suas posições e os valores maiores, ou menores, sequencialmente. Disso: Talvez seja isso: /* Admite-se inicialmente que 0 é uma não posição. */ int atual ,maior ,m= 0/* posição do maior. */ ,menor ,n= 0/* ...menor. */ ,y/* sendo a posição atual */; ... /* Defina-se m,n */ if (!m || atual>maior) maior= atual , m= y; if (!n || atual<menor) menor= atual , n= y; Suponho que assim definira m, n acertadamente.
  8. Ansi C

    C++ Maior e Menor e posições

    Olá! O Problema Escreva um programa que leia 10 números inteiros e os armazene em um vetor. Imprima o vetor, o maior elemento (número e posição) e o menor elemento (número e posição). Uma analise ***Observe o verbo! Ler 10 números como inteiro (supostamente decimal) Existem, pelo menos, três notações de inteiros: hexadecimal, decimal e octal; aqui está especificamente o decimal (“%d”) … Notei: Errou ao especificar o formato na `printf`, porém usou um acertadamente na `scanf` De volta à leitura de números inteiros, assuma decimais sendo 1/3 dos padrões de leitura de inteiros, daí, pressuponho que o especificador adequado ao problema de ler (…) inteiros é “%i”, porque esse argumentará, simultaneamente, aqueles 3 padrões. C'11 - gcc '11.4 int numeros[10];/* sendo o conjunto de números lidos */ /* Leitura de 10 números inteiros (de base: octal, decimal ou hexadecimal )*/ for (unsigned i= 0 ; i<10 ; ++i){ int elem= i+ 1; printf ("%c%s%d%s",'\r',"Digite o valor do elemento ",elem,": "); elem= getchar (); if (EOF==elem) break; if ('\n'==elem) { --i; continue; } ungetc (elem,stdin); /* Ler o inteiro; se falha, então, descarta 1 elemento */ if (1!=scanf ("%i",&elem)) --i; /* ^~~~ Isto é, opcionalmente, hexadecimal, decimal ou octal */ else numeros[i]= elem; while ('\n'!=(elem= getchar()) && elem!=EOF); } Armazenar Na porção da memória que é sabidamente um vetor. Encontrar (esse é implicito) A partir daquele vetor, o seu maior e menor elemento (valores e posiçções) Imprimir Os resultados, supostamente no simulador de terminal.
  9. Ansi C

    maior menor em c

    Essa, talvez, não seja a questão! Supostamente, há captura duma lista de números, depois, para cada ocorrência de número negativo, é necessário entrar com positivo. A propósito, a fonte da lista não é o teclado + usuário, não tem sentido ser deste jeito. Essa lista tem outras fontes: neste caso, acho melhor o arquivo texto (TXT). *** O segundo prompt acontece depois da captura da lista. Nada disso! 1. Lista (o punhado de número no arquivo.txt); 2. Leituras de positivos (que corrigem os casos negativos); 3. Aquele relatório. Para mim, algo assim é bom: C'11 - gcc '11.4 #include <stdio.h> int main (int argc, char *argv[]) { FILE *f= NULL; if (argc<2 || NULL==(f= fopen (argv[1],"r"))) { perror ("Falha! Não encontrou o arquivo"); return 0; } int numero= 0 ,maior= 0 ,menor= 0 ,soma= 0; while (fscanf (f,"%d",&numero)==1) { if (0==numero) break; while (0>=numero) { printf ("%c%s%d%s",'\r',"Erro número não positivo (",numero,"): "); int c= getchar (); if (EOF==c) break; if ('\n'==c) continue; ungetc (c,stdin); if (scanf ("%d",&numero)!=1) getchar (); } if (soma) { soma+= numero; if (numero>maior) maior= numero; else if (numero<menor) menor= numero; } else { soma= maior= menor= numero; } } putchar ('\n'); printf ("%s%d%c%d%c","O maior e o menor número é: ",maior,' ',menor,'\n'); printf ("%s%d%c","A soma dos número é: ",soma,'\n'); return 0; }
  10. Olá, observem. O Problema Algoritmo contendo a altura e o sexo (masculino, feminino) que calcule e escreva. A maior e a menor altura do grupo é: A média de altura das mulheres ... é: O número de homens ... é: Uma Analise Há alguma indicação de interação (dado-a-dado) com o usuário? — Acho que não, e nem há indicação do tamanho do grupo. A condição de parada do algoritmo, supostamente, não é um limite quantitativo, mas sim, talvez, um sinal (flag): nota-se que a informação é composta dum par de dados (altura e sexo: sendo “masculino” ou “feminino”) e o grupo, aparentemente, é uma corda de informação. E sabe-se que as cordas acabam em 0 ('\0'). ***Para min, deve-se uma revisão de prompt.
  11. Isso acima, insinua-me um estudo a pagar na solução do exercício, se tem no apontamento, então, é requisito. Dica: Apresente-o uma solução que vem com a função `sqrt`
  12. def executar_selection_sort(lista): lista_ordenada = [] while lista: minimo = min(lista) lista_ordenada.append(minimo) lista.remove(minimo) return lista_ordenada lista=[ 10,9,5,8,11,-1,3 ] #Isto Declara a lista lista=executar_selection_sort(lista) # I. Isto atribui o retorno print(lista) #II. Isto produz a lista com resultados do retorno Porque faltam declarações: I. atribuir o retorno II. chamar uma função que produza, por exemplo, ´print´ que produz resultados no simulador de terminal.
  13. E no VISUALG3 escreval("Com juros de 20%, pagarei R$",jurostotais) escreva("Vou pagar em quantas parcelas ?") leia(parcelas) se parcelas<=0 então parcelas <- 1 fimse valorPorParcela <- jurostotais/parcelas escreva("Cada parcela terá o valor de:",valorPorParcela)
  14. @Samuel Fortes Brasil Olá Bem-vindo ao CdH! Sobre o problema, aparentimente há uma operação de divisão com divisor de valor 0; Logo, suponho, que esteja aqui. Não encontrei outras operações de divisão com capacidade para produzir essa mensagem de erro: Tem aqui, 100, uma variável constante e maior que 0. Sugestão: Depois da leitura de `parcelas`, verifique a variável para valores maiores que 0, porque divisão com divisor de valor 0 sabemos que não podemos. Adendo: Analise, de fato pode uma quebra de linha fora dos limites duma string literal, desse modo. `/n ` é certo? Note que no final do nome da variável há um pedaço de aspas, está certo?
  15. Olá @devair1010 Somente isso É, o que é: x não representa, explicitamente, a quantia de números amigos solicitados — como aparentemente supunhas —, mas sim, x representa com os coeficientes a definição de y, sendo y um máximo de n (o amigo do amigo)

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!