Ir ao conteúdo
  • Cadastre-se

Ansi C

Membro Pleno
  • Posts

    3.301
  • Cadastrado em

  • Última visita

posts postados por Ansi C

  1. @rafaznj

    Boar Terde!

     

    Em 22/07/2023 às 10:48, rafaznj disse:

    Fiz o code assim, mas queria saber outro jeito de mostrar o maior e menor número da lista.

     

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

    #include <iostream>
    #include <locale.h>
    using namespace std;
    int main () {
    	int lista= 0, n, cont, menor, maior; 
    	cout << "Digite o tamanho da lista: ";
    	cin >> lista;
    	for (int i= 1; i<=lista ; i ++) {
            int n;
            cout << "Digite o numero " << i << ": ";
            cin >> n;
            switch (i) {
                case 1:
                maior= menor= n;
                break;
                default:
                if (n<menor) menor= n;
                if (n>maior) maior= n;
                break;
                }}
        if (lista)  cout << "menor: " << menor << endl ,
                    cout << "maior: " << maior << endl;
        return 0;
        }

     

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

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

     

    ***

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

     

    • Obrigado 1
  5. 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;
      }


    ***

    • Obrigado 1
  6. @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

    • Curtir 1
  7. @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!

     

     

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

  9. 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;
      }

     

  10. 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;
      }

     

     

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

     

    • Obrigado 1
  12. 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).

     

     

     

    • Curtir 1
  13. 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 ??

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

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

     

     

     

    • Curtir 1
  16. 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;
      }

     

     

     

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

     

     

     

     

    • Obrigado 1
  18. 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

    • Curtir 1
  19. 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.

    • Curtir 1
    • Obrigado 1
  20. @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.

    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")
    • Obrigado 1
  21. 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)

     

     

    • Obrigado 1
  22. 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.

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

     

    • Obrigado 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

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!