-
Posts
3.301 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Ansi C
-
-
Por exemplo:
C'11 - gcc'11.4
#include <stdio.h> int main (void){ int i ,j ,m[4][4]= {0} ,menor[2]= {0} ,maior[2]= {0}; printf ("%s","Informe até 16 valores como inteiro: "); for (i= 0 ; i<4 ; i++) { for(j= 0 ; j<4 ; j++) { int c= scanf ("%i",&m[i][j]); if (c==EOF || c!=0x1) i= 4 , j= 4; else { if (m[i][j]<m[menor[0]][menor[1]]) menor[0]= i , menor[1]= j; if (m[i][j]>m[maior[0]][maior[1]]) maior[0]= i , maior[1]= j; }}} printf ("%s%d%c%c","O menor valor é: {",m[menor[0]][menor[1]],'}','\n'); printf ("%s%d%c%c","O maior valor é: {",m[maior[0]][maior[1]],'}','\n'); return 0; }
Se há algum refinamento de código, então, aplique-o, porque para mim esse código confere com enuciados.
-
Em 19/07/2017 às 18:43, Leo_92 disse:
O código é para achar o maior e menor número de uma matriz
Porém, fez um que insinua produzir e talvez ler uma matriz enquanto determina o maior e o menor valor entre as leituras. Assim, faz com que o serviço da matriz bi fique abaixo do enunciado, quase inútil. Interprete, ipo — Entrada, processamento e Saída.
Verá que o processo excluiu a matriz.
Corrija: Invés do valor, memorize o índice de maior...
***
-
@ningumx Bom dia!
Notei que maioria das falhas são de especificadores, tipos de dados e atribuir entre tipos diferentes.
C'11 - gcc'11.4
#include <stdio.h> int main() { float v[10]; int i; for (i= 0 ; i<10 ; i++) { printf ("%c%s%d%s",'\r',"Digite o ",i+ 1,"° valor: "); int c= scanf ("%f",&v[i]); if (c== EOF) { perror ("Falha na leitura"); return 1; } if (c!=1) --i; while ('\n'!=(c= getchar ()) && EOF!=c); } int maior= 0; for (i= 0 ; i<10 ; i++) { if (v[i]>v[maior]) maior= i; } float soma= 0; for (i= 0 ; i<10 ; i++) { soma= soma+ v[i]; } float media= soma/ 10; printf ("O maior valor eh: %.2f.\n",v[maior]); printf ("A media dos valores eh: %.2f.\n",media); printf ("Valores maiores que a media: \n"); for (i= 0 ; i<10 ; i++) { if (v[i]>media) printf ("%.2f\n",v[i]); } return 0; }
Sugestão: dê-se a oportunidade de aprender mais com o compilador, ative todos os alertas (todos, inclusive os pedantes).
Dica: utilize gcc'11 e chame-o com estas opções
Citação-std=c11 -Wall -Wextra -Wfatal-errors -pedantic -pedantic-errors -fanalyzer
- 1
-
Boa Noite!
Notei que suas mensagens são iguais
"Todos Elementos Com Indice Maior Que O Maior Numero"
Em 24/09/2018 às 05:12, devair1010 disse:printf("Todos Elementos Com Indice Menor Que O Maior Numero\n\n"); for(i=0;i<posMaior;i++){ printf("%d ",valor[i]); } printf("\n\nTodos Elementos Com Indice Maior Que O Maior Numero\n\n"); for(i=posMaior+1;i<10;i++){ printf("%d ",valor[i]);
Sigam a sugestão
Em 23/09/2018 às 18:49, P1909 disse:Valor máximo = 11, com índice = 3.
Elementos com índice menor que 3 são: 2, 5, 9.
Elementos com índice maior que 3 são: 3, 6, 8.
Por exemplo
C'11 gcc'11.4
#include <stdio.h> #define TAM 10 int main (void){ int valor[TAM] , i/* sendo contadora de laços */, maior ,posMaior; for (i= 0; i<TAM; ++i) { printf("Informe o valor %i ",i+ 1); int c= scanf("%i",&valor[i]); if (c==EOF) return 1; } maior= valor[0]; posMaior= 0; for (i= 0 ; i<TAM ; i++) if (valor[i]>maior) maior= valor[posMaior= i]; putchar ('\n'); printf ("%s%d%s%d%c","Valor máximo = ",maior,", com índice = ",posMaior,'\n'); if (posMaior>0) { printf ("%s%d%s","Elementos com índices menor que ",posMaior," são: "); for (i= 0 ; i<posMaior ; ++i) { printf ("%d",valor[i]); printf ("%s",posMaior==i+ 1? "." : ", "); } putchar ('\n'); } if (posMaior<TAM- 1) { printf ("%s%d%s","Elementos com índices maior que ",posMaior," são: "); for (i= posMaior+ 1; i<10 ; ++i) { printf ("%d",valor[i]); printf ("%s",10==i+ 1? "." : ", "); } } putchar ('\n'); return 0; }
***- 1
-
@Samuel Fortes Brasil Boa Tarde!
Aplique a seguintes correções
Apague os parenteses que isolam as sentenças.
Identifique as declarações do bloco com recuou.
Deste jeito:
Enquanto valorInicial < valorFinal faca Escreval(valorInicial) valorInicial <- valorInicial + contPersonalizada FimEnquanto ... Enquanto valorFinal >= valorInicial faca Escreval(valorFinal) valorFinal <- valorFinal - contPersonalizada FimEnquanto
Produz
Início da execução ----------------------------- CONTADOR INTELIGENTE ----------------------------- Qual o valor inicial da contagem? 10 Até quando o contador deverá contar? 15 ----------------------------- Pretende fazer uma contagem(normal ou regressiva) de quanto em quantos números? Por exemplo: 1 + 2 ao invés de 1 + 1. Resposta.: 1 10 11 12 13 14 Fim da execução.
visualg 3.0.7.0
- 1
-
@Dafne Guimarães Olá!
O Problema
Escreva uma função (bem como um programa que exercite tal função) que receba 3 números informados pelo usuário no programa principal. A função deverá retornar o maior e o menor número. Posteriormente, o programa principal deverá imprimir essas informações.
Essa função não possui o comando printf.
Chamam de passagem por referência, nisso maior e menor são ponteiros para maior e menor no escopo da função main.
Por exemplo
C'11 -gcc'11.4
#include <stdio.h> int proceed (float array[3], float *max, float *min); int main (void){ float array[3]; for (int count= 3 ; count ; --count) { printf ("%c%s%d%s",'\r',"entre com ",count," números: "); int c= scanf ("%f",&array[count- 1U]); if (c==EOF) { perror ("Falha na leitura"); return 1; } if (c==1) continue; getchar (); ++count; } float maior ,menor; int c= proceed (array,&maior,&menor); if (!c) printf ("%c%s%f%c%f%c",'\r',"O maior e menor número é: ",maior,' ',menor,'\n'); return 0; } int proceed (float A[3], float *a1, float *a2){ if (NULL==A || NULL==a1 || NULL==a2) return 1; *a1= *a2= *A; for (float const *LIMIT= A+ 3U ; A<LIMIT ; ++A) if (*A>*a1) *a1= *A; else if (*A<*a2) *a2= *A; return 0; }
O processo (função `proceed`) tem 3 argumentos,
sendo ela do tipo (float *, float *, float *)
Às vezes, as ponteiros são ditas referências!
-
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)
Em 20/10/2021 às 09:24, Ray12 disse:printf("escreva um numero\n");
*Nada disso!
É "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; }
Suponha que o dado é vetor, somente ele satisfaz.
-
Em 16/08/2021 às 18:58, kailane disse:
Como o vetor tem 20 valores eu vou ter que comparar todos um por um?
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; }
-
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í ...
Em 05/06/2022 às 20:28, ningumx disse:printf("Digite o numero de homens: \n"); scanf("%d",&hom);
É 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; }
-
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.
- 1
-
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.
Em 21/04/2022 às 20:18, Vitor Nata Zanetta Santos disse:printf("Digite a quantidade de elementos: "); scanf("%i", &q);
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
Em 21/04/2022 às 20:18, Vitor Nata Zanetta Santos disse:for(i=1;i<=q;i++){ printf("\nDigite o numero para o indice [%i]: ", i); scanf("%i", &p[i]); soma=soma+p[i]; if(p[i] < menor){ menor = p[i]; }else{ if(p[i] > maior){ maior = p[i]; } } }
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).
- 1
-
Em 20/09/2021 às 09:58, Andreygabs disse:
Preciso q o programa pare quando o usuário digitar um número negativo , porém o número negativo não pode sair como menor , qual o problema com o meu código?
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
Em 20/09/2021 às 09:58, Andreygabs disse:int maior, menor, num;
maior=num;
menor=num;
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 */;
Em 20/09/2021 às 09:58, Andreygabs disse:qual o problema com o meu código?
Em 20/09/2021 às 09:58, Andreygabs disse:} while(num>=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 ??
-
@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:
Em 11/12/2021 às 16:24, immoraesz disse:int num, maior = 0, menor = 0, y = 0;
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.
-
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)
Em 04/04/2022 às 17:36, BONGO boy disse:printf("\nDigite o valor do elemento da posicao $d: ", i+1);
scanf("%d", &vet[i]);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.
- 1
-
Em 01/06/2009 às 15:44, Rudydrier disse:
[...] alguém poderia me dizer o que faço para que um numero negativo não seja informado [...]
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.
Em 01/06/2009 às 15:44, Rudydrier disse:printf("digite os valores:"); scanf("%d",&nro);
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; }
-
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.
- 1
-
Em 24/04/2024 às 11:22, jaireugenio disse:
as únicas bibliotecas q sei são stdio e math, [...]
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`
- 1
-
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
1 hora atrás, PSan disse:Não obtenho um resultado!
RESULTADO:
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.
- 1
- 1
-
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)
- 1
-
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.
1 hora atrás, Samuel Fortes Brasil disse:valorPorParcela <- jurostotais/parcelas
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.
1 hora atrás, Samuel Fortes Brasil disse:juros <- (dinheiro * 20)/100
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.
1 hora atrás, Samuel Fortes Brasil disse:Escreva(/n"Vou pagar em quantas parcelas ?")
`/n ` é certo?
Note que no final do nome da variável há um pedaço de aspas, está certo?
2 horas atrás, Samuel Fortes Brasil disse:Escreva("Cada parcela terá o valor de:",valorPorParcela")
- 1
-
53 minutos atrás, devair1010 disse:
nesse novo código que postou , se na entrada for informado "9" , só mostrará "7" e sendo que para mostrar os 9 números precisa informar "43" logo na entrada
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)
- 1
-
Esse exercício é um clássico, tem aquela abordagem dos maximo, mínimo e meio:
Por exemplo.
/* * FÓRUM CLUBE DO HARDWARE --- CdH * @Ansi C * 2014 */ typedef unsigned altura;/* Considera-se alto\baixo sempre acima do chão. */ #include <stdio.h>/* Include the header file for input and output */ int main (){ altura nova= -1 ,menor= -1 ,maior= 0; /* Sendo 0 logicamente o chão, e -1 o céu */ printf ("Entre com 5 alturas (use a Espaço ou a Enter entre elas):\n"); for (unsigned idx= 1 ; idx<=5 ; ++idx) { printf ("%c%s",'\r',">>>"); nova= -1; int c= scanf ("%u",&nova); if (c!=1 || ((int)nova)<=-1) { /* Ou seja, uma nova é muito abaixo do céu até o chão */ if (c==EOF) break; if (c!=1) getchar (); idx-= 1; } else { if (maior<nova) maior= nova; if (menor>nova) menor= nova; } } printf ("%s","Resultado: \n\t"); printf ("%s%u%s","<: ",menor,"\n\t"); printf ("%s%u%c",">: ",maior,'\n'); return 0; }
Eu acho que é isso.
-
Meu palpite é ..., incompatibilidade de codificação de arquivo.
Sendo isso, então, talvez, corrija-se quando declara a função com o parâmetro Encoding , explicitamente.
Bem-vindo ao CdH!
-
4 horas atrás, jaireugenio disse:
eu programa a pouco mais de uma semana
Eu compreendi você "assim que bati com os olhos..."
Enfim,
de fato, o programa produziu - para mim, somente isso bastaria. Modifiquei-o sutilmente nos nomes das variáveis com termos que considero didáticos - o programa permanece (o mesmo).
/* * FÓRUM CLUBE DO HARDWARE --- CdH * * @jaireeugenio * Membro Junior * 2024 */ #include <stdio.h> int main (){ int divisor ,soma ,amigo ,x= 3; scanf ("%d",&x); x*= (x>3)? 1500 : 1000; for (int numero= 2 ; numero<=x ; numero++) { amigo= 1; for (divisor= 2; divisor<=(numero/ 2); divisor++) { if ((numero% divisor)==0) amigo+= divisor; //calcula a soma dos divisores } soma= 1; if (amigo!=numero) for (divisor= 2; divisor<=(amigo/ 2); divisor++) { if ((amigo% divisor)==0) soma+= divisor; } if (numero==soma && numero<amigo) { printf("(%d,%d)\n",numero,amigo); } } putchar ('\n'); return 0; }
*Prefiro um contador à expressão x.
- 1
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
Programa de maior e menor número
em C/C#/C++
Postado
@rafaznj
Boar Terde!
Essa dificuldade está em definir o valor que desencadeia o fluxo de comparações e produz o maior e o menor valor\número.
Essa talvez seja a questão.
— Como definir inicialmente o referêncial de maior e o menor?
Alguns suponha não haver limites, então, o primeiro e o único valor de uma lista é simultaneamente o maior e o menor dessa lista de um valor. Esse é caso que inspira a solução acima (#3) e por exemplo:
C++