Ir ao conteúdo
  • Cadastre-se

Eduardo_Braz

Membro Pleno
  • Posts

    98
  • Cadastrado em

  • Última visita

posts postados por Eduardo_Braz

  1. if(cont >= k){
            printf("NAO\n");
            for(i = 1; i <= n; i++){
                if(vetor[i] <= 0){
                    printf("%d\n", vetor[i]);
                }
            }
        }

     O erro está nessa parte o iniciado pede os índices das ocorrências quando a condição for verdadeira.

    Quando eu troco o vetor somente por i ele imprime 1 e o 4 não entendo porque alguém poderia me ajudar nessa parte.

     

    Entrada:

    4 1

    0 -1 2 1 (Índice 1  é o  0)

                 (Índice 2  é o -1)

                 (Índice 3  é o  2)

                 (Índice 4  é o  1)

     

    Quando eu faço a troca:

    Saí assim:

     

    1

    4

     

    O correto pelo o que eu coloquei acima séria:

     

    1

    2

     

    Eu teria que colocar em ordem decrescente tudo o que eu já testei não funcionou, gostaria ver com vocês.

     

    Por fim ficaria assim:

     

    2

    1

    • Curtir 1
  2. 1 minuto atrás, devair1010 disse:

    @Eduardo_Braz     seu código está bom , e para postar seu código é melhor usar o botão <> que está desenhado lá na barra de ferramentas da janela de postar 

    478025385_barradeferramentas.JPG.0a2f72c92eade8e459ff098a361318f3.JPG

    pois senão seu código fica faltando alguns caracteres como os  [ i ]  que sumiram do seu código  ,  e se colocar em ordem decrescente resolve então seu código com algumas modificações poderia ser assim  :

    
    #include <stdio.h>
    #include <conio.h>    
    void troca(int* a, int*b){
        int aux;
        aux=*a;
        *a=*b;
        *b=aux;
    }
        
    void insertionSort(int n, int vet[]){
        int i,j,aux,menor, indMenor     ;
        for (i=0; i<n-1; i++          ){
            for(j=i+1;j<n;j++         ){
                if( vet[j] > vet[i]   ){
                    aux    = vet[i]    ;
                    vet[i] = vet[j]    ;
                    vet[j] = aux       ;
                }
            }
        }
    }
    int main(){
        int n, k, i, j, cont, vetor[1000];
        while(1){
            scanf("%d %d", &n, &k);
            if(n <= 1000 && n >= 0 && k <= 1000 && k >= 0){
                break;
            }
        }
        for(i = 0; i < n; i++){
            scanf("%d", &vetor[i]);
        }
        for(i = 0; i < n; i++){
            if(vetor[i] > 0){
                cont++;
            }
        }
        if(cont >= k){
            printf("NAO\n");
            for(i = 0; i < n; i++){
                insertionSort(n, vetor);
                if(vetor > 0){
                    printf("%d\n", vetor[i]);
                }
            }   
        }
        else{
            printf("SIM");
        }
        getch();
    }

     

    Muito obrigado pela a dica de postagem, vou estudar o seu código aqui muito obrigado mesmo

     

    adicionado 3 minutos depois
    2 minutos atrás, Eduardo_Braz disse:

    if(cont >= k){ printf("NAO\n"); for(i = 0; i < n; i++){ insertionSort(n, vetor); if(vetor > 0){ printf("%d\n", vetor[i]); } } }

    nessa parte tem como eu pegar o indice onde os números aparece?

    • Curtir 1
  3. Eu meio que arrumei porém:

     

    A saída que eu conseguir com a entrada sendo

    10 4
    -93 -86 49 -62 -90 -63 40 72 11 67:

    NAO

    1

    3

    4

    5

    10

     

    e a saída que era para ser:

    Saída

    NAO
    6

    5

    4

    2

    1

     

    #include <stdio.h>

    int main(){

        int n, k, i, j, cont, vetor[1000], aux, po;

        while (1){
            
            scanf("%d %d", &n, &k);
            
            if(n <= 1000 && n >= 0 && k <= 1000 && k >= 0){
                
                break;
                
            }
        }

        for(i = 0; i < n; i++){
            
            scanf("%d", &vetor);
            
        }

        for(i = 0; i < n; i++){
        
            if(vetor <= 0){
                cont++;
            }
        }

        if(cont >= k){
            printf("NAO\n");
            for(i=1; i<=n; i++){
                if (vetor <= 0){
                    aux = vetor;
                    po=i;                 
                    printf("%d\n", po);
                }
            }
        }

        else{
            printf("SIM\n");
        }
    }

    • Curtir 1
  4. Eu encontrei o erro só que eu não sei resolver é o seguinte ele tem que achar o índice dos números igual ou menor a ZERO só que não estou conseguindo pegar os mesmo...

    adicionado 1 minuto depois
    agora, Eduardo_Braz disse:

    Eu encontrei o erro só que eu não sei resolver é o seguinte ele tem que achar o índice dos números igual ou menor a ZERO só que não estou conseguindo pegar os mesmo...

    Em ordem decrescente..

    • Curtir 1
  5. 15 horas atrás, Eduardo_Braz disse:

    #include <stdio.h>
        
    void troca(int* a, int*b){
        int aux;
        aux=*a;
        *a=*b;
        *b=aux;
    }
        
    void insertionSort(int n, int vet[]){
        int i,j, menor, indMenor;
        for (i=0; i<n-1; i++) {
            menor=vet;
            indMenor=i;
            for(j=i;j<n;j++){
                if (vet[j] > menor) {
                    menor=vet[j];
                    indMenor=j;
                }
            }
            troca(&vet, &vet[indMenor]);
        }
    }
        
    int main(){
        int n, k, i, j, cont, vetor[1000];
        
        while (1){
            scanf("%d %d", &n, &k);
            if(n <= 1000 && n >= 0 && k <= 1000 && k >= 0){
                break;
            }
        }
        for(i = 0; i < n; i++){
            scanf("%d", &vetor);
        }
        for(i = 0; i < n; i++){
            if(vetor > 0){
                cont++;
            }
        }
        if(cont >= k){
            printf("NAO\n");
            for(i = 0; i < n; i++){
                insertionSort(n, vetor);
                if(vetor > 0){
                    printf("%d\n", vetor);
                }
            }   
        }
        else{
            printf("SIM");
        }
    }

     

    De 11 teste passou em apenas 4

    :(

    • Obrigado 1
  6. #include <stdio.h>
        
    void troca(int* a, int*b){
        int aux;
        aux=*a;
        *a=*b;
        *b=aux;
    }
        
    void insertionSort(int n, int vet[]){
        int i,j, menor, indMenor;
        for (i=0; i<n-1; i++) {
            menor=vet;
            indMenor=i;
            for(j=i;j<n;j++){
                if (vet[j] > menor) {
                    menor=vet[j];
                    indMenor=j;
                }
            }
            troca(&vet, &vet[indMenor]);
        }
    }
        
    int main(){
        int n, k, i, j, cont, vetor[1000];
        
        while (1){
            scanf("%d %d", &n, &k);
            if(n <= 1000 && n >= 0 && k <= 1000 && k >= 0){
                break;
            }
        }
        for(i = 0; i < n; i++){
            scanf("%d", &vetor);
        }
        for(i = 0; i < n; i++){
            if(vetor > 0){
                cont++;
            }
        }
        if(cont >= k){
            printf("NAO\n");
            for(i = 0; i < n; i++){
                insertionSort(n, vetor);
                if(vetor > 0){
                    printf("%d\n", vetor);
                }
            }   
        }
        else{
            printf("SIM");
        }
    }

     

    De 11 teste passou em apenas 4

    • Obrigado 1
  7. Um professor X tem uma turma de N alunos. Frustrado com a falta de disciplina, ele decide cancelar a
    aula se menos de K alunos estão presentes quando a aula começa. Dado o tempo de chegada de cada aluno,
    determinar se a aula é cancelada. Caso a aula não seja cancelada, imprima uma lista com os alunos que
    chegaram antes do início da aula em ordem contrária à mostrada na entrada.

     

    Entrada

     

    A primeira linha apresenta dois números inteiros separados por um espaço: N (alunos da turma) e K
    (mínimo de presenças para que a aula não seja cancelada), com 0 ≤ N, K, ≤ 1000. Na segunda linha há
    N inteiros separados por espaços (A1 , A2 ,... , An ) descrevendo os tempos de chegada para cada aluno.
    Suponha que esta ordem seja a mesma da lista de presença do professor, com o primeiro aluno descrito na
    entrada sendo o aluno 1 e assim por diante. Nota: horários de chegada não-positivos (Ai ≤ 0) indicam que
    o aluno chegou cedo ou na hora; horários de chegada positivos (Ai>0) indicam o aluno chegou Ai minutos
    tarde.

     

    Saída

     

    O programa apresenta uma mensagem com a palavra “SIM” se a aula é cancelada, e “NAO” caso
    contrário. Após imprimir a mensagem quebre uma linha. Se a aula não for cancelada, imprima os M alunos
    presentes antes do início da aula (ou seja, com Ai ≤ 0) na ordem contrária da lista de entrada.
     

    • Curtir 1
  8. Por Favor

     

    O erro é o seguinte quando tem um número negativo ele está imprimindo exemplo de entrada e sua divada saída:

     

    A condição do não e sim é a seguinte se o numero k nesse caso de teste é o 2.

     

    O vetor tem que conter número maior que ZERO

     

    Entrada:

    4 2

    0 -1 2 1

    Saída:

    NAO

    2

    1

     

    Código

     

    #include <stdio.h>

    void troca(int* a, int*b){
        int aux;
        aux=*a;
        *a=*b;
        *b=aux;
    }

    void insertionSort(int n, int vet[]){
        int i,j, menor, indMenor;
        //para cada elemento i do vetor
            for (i=0; i<n-1; i++) {
        menor=vet;
            indMenor=i;
            //procurar o i-esimo menor guardar o seu valor e de seu indice, respectivamente em menor e indMenor
            for(j=i;j<n;j++){
                if (vet[j] > menor) {
                    menor=vet[j];
                    indMenor=j;
                }
            }
             //O i-esimo menor esta na variavel menor trocar de posicao os elementos vet com vet[indMenor]
            troca(&vet, &vet[indMenor]);
        }
    }

    int main(){
        int n, k, i, j, cont, vetor[1000];

        while (1){
            scanf("%d %d", &n, &k);
            if(n <= 1000 && n >= 0 && k <= 1000 && k >= 0){
                break;
            }
        }
        for(i = 0; i < n; i++){
            scanf("%d", &vetor);
        }
        for(i = 0; i < n; i++){
            if(vetor > 0){
                cont++;
            }
        }
        if(cont >= k){
            printf("NAO\n");
            for(i = 0; i < n; i++){
                insertionSort(n, vetor);
                printf("%d\n", vetor);
            }   
        }
        else{
            printf("SIM\n");
        }
    }

    • Curtir 1
  9. Dada uma sequência de N números entre 0 e 100. Determine qual o valor de maior frequência. Caso
    haja mais de um valor tenha a maior frequência, mostre o menor deles.
    Entrada
    Na primeira linha há um inteiro N, 1 N 1000000, representando a quantidade números. Nas N
    linhas seguintes haverá um número natural entre 0 e 100 inclusive por linha.
    Saída
    O programa gera apenas duas linhas. Na primeira dela mostre qual foi o valor com maior frequência. E
    na segunda linha, mostre a quantidade de vezes que esse número apareceu na sequência de valores. Após
    a impressão deste último valor quebre uma linha. Caso haja mais de um valor tenha a maior frequência,
    mostre o menor deles.
    Exemplo
    Entrada

    10
    1
    7
    4
    29
    7
    4
    7
    8
    7
    29
    Saída
    7
    4

     

    Código <- Não sei porque funciona

     

    //Programa 13
     
    #include <stdio.h>
     
    int main(){
      int vetor[1000000], i, j, n, aux, k, total;
     
      while(1){
        scanf("%d",&n);
        if(n <= 1000000 && n > 0){
          break;
        }
      }
     
      for (i = 0; i < n; i++){
        scanf("%d", &vetor);
      }
      for (i = 0; i < n; i++){
        for(j = i + 1; j < n; j++){
          if (vetor == vetor[j]){
            aux = vetor[j];
          }
        }
      }
     
      for (k = 0; k < n; k++){
          if (aux == vetor[k]){
            total++;
          }
      }
     
      printf("%d", aux);
      printf("\n%d", total);
    }

    • Curtir 1
    • Obrigado 1
  10. Citação
    2 horas atrás, Eduardo_Braz disse:

    Alguém poderia me ajudar com essa o código está praticamente feito falta apenas uma correção.

     

    Faça um programa que receba vários vetores e informe para cada um deles qual o maior elemento e o
    índice (da primeira ocorrência) em que encontra-se tal elemento.
    Entrada
    O programa possui vários casos de testes. A primeira de cada caso contem um inteiro N, 1 < N ≤ 10000,
    representando o tamanho do vetor. A segunda linha conterá N inteiros entre 0 e 1000, representando os N
    elementos do vetor. A entrada termina quando N=0.
    Saída
    O programa gera N linhas de saída, com dois inteiros separados por um espaço em branco. O primeiro
    inteiro é o índice da primeira ocorrência do maior elemento do vetor e o segundo inteiro é o maior valor do
    vetor. Após a impressão de cada saída, inclusive a última, quebre uma linha.
    Exemplo

    Entrada

    10
    6 54 7 3 73 6 67 23 6 9
    5
    9 8 7 6 5
    8
    0 1 2 3 4 5 6 7
    0

    Saída

    4 73
    0 9
    7 7

     

    Código <- O erro é o seguinte se tiver o maior número no mesmo vetor ele imprime o índice dos outros também não apenas o primeiro

     

    //Programa 05

     

    #include <stdio.h>

    #include <limits.h>

     

    int main(){

        int n, vetor[1000], maior, menor, i, j, k, aux;

     

        maior = INT_MIN;

        

        aux = 1;

        

        while(aux > 0){

            scanf("%d", &n);

        

            for (i = 0; i < n; i++){

                scanf("%d", &vetor);

            }

            for (i = 0; i < n; ++i) {

                if (i == 0){

                    maior = vetor;

                }else if(vetor > maior){

                    maior = vetor;

                }

            }

            for (k = 0; k < n; k++)

            {

                if (maior == vetor[k])

                {

                    printf("%d %d\n", k, maior);

                }

            }

            aux = n;

        }

    }

     

    Atualizei o Código mais ainda tem um erro ele imprime se tiver um número igual o maior na primeira entrada ainda imprime ele é só isso pelo os teste que eu fiz

    adicionado 1 minuto depois
    2 horas atrás, Eduardo_Braz disse:

    Alguém poderia me ajudar com essa o código está praticamente feito falta apenas uma correção.

     

    Faça um programa que receba vários vetores e informe para cada um deles qual o maior elemento e o
    índice (da primeira ocorrência) em que encontra-se tal elemento.
    Entrada
    O programa possui vários casos de testes. A primeira de cada caso contem um inteiro N, 1 < N ≤ 10000,
    representando o tamanho do vetor. A segunda linha conterá N inteiros entre 0 e 1000, representando os N
    elementos do vetor. A entrada termina quando N=0.
    Saída
    O programa gera N linhas de saída, com dois inteiros separados por um espaço em branco. O primeiro
    inteiro é o índice da primeira ocorrência do maior elemento do vetor e o segundo inteiro é o maior valor do
    vetor. Após a impressão de cada saída, inclusive a última, quebre uma linha.
    Exemplo

    Entrada

    10
    6 54 7 3 73 6 67 23 6 9
    5
    9 8 7 6 5
    8
    0 1 2 3 4 5 6 7
    0

    Saída

    4 73
    0 9
    7 7

     

    Código <- O erro é o seguinte se tiver o maior número no mesmo vetor ele imprime o índice dos outros também não apenas o primeiro

     

    //Programa 05

     

    #include <stdio.h>

    #include <limits.h>

     

    int main(){

        int n, vetor[1000], maior, menor, i, j, k, aux;

     

        maior = INT_MIN;

        

        aux = 1;

        

        while(aux > 0){

            scanf("%d", &n);

        

            for (i = 0; i < n; i++){

                scanf("%d", &vetor);

            }

            for (i = 0; i < n; ++i) {

                if (i == 0){

                    maior = vetor;

                }else if(vetor > maior){

                    maior = vetor;

                }

            }

            for (k = 0; k < n; k++)

            {

                if (maior == vetor[k])

                {

                    printf("%d %d\n", k, maior);

                }

            }

            aux = n;

        }

    }

    Atualizei o Código mais ainda tem um erro ele imprime se tiver um número igual o maior na primeira entrada ainda imprime ele é só isso pelo os teste que eu fiz

  11. Alguém poderia me ajudar com essa o código está praticamente feito falta apenas uma correção.

     

    Faça um programa que receba vários vetores e informe para cada um deles qual o maior elemento e o
    índice (da primeira ocorrência) em que encontra-se tal elemento.
    Entrada
    O programa possui vários casos de testes. A primeira de cada caso contem um inteiro N, 1 < N ≤ 10000,
    representando o tamanho do vetor. A segunda linha conterá N inteiros entre 0 e 1000, representando os N
    elementos do vetor. A entrada termina quando N=0.
    Saída
    O programa gera N linhas de saída, com dois inteiros separados por um espaço em branco. O primeiro
    inteiro é o índice da primeira ocorrência do maior elemento do vetor e o segundo inteiro é o maior valor do
    vetor. Após a impressão de cada saída, inclusive a última, quebre uma linha.
    Exemplo

    Entrada

    10
    6 54 7 3 73 6 67 23 6 9
    5
    9 8 7 6 5
    8
    0 1 2 3 4 5 6 7
    0

    Saída

    4 73
    0 9
    7 7

     

    Código <- O erro é o seguinte se tiver o maior número no mesmo vetor ele imprime o índice dos outros também não apenas o primeiro

     

    //Programa 05

     

    #include <stdio.h>

    #include <limits.h>

     

    int main(){

        int n, vetor[1000], maior, menor, i, j, k, aux;

     

        maior = INT_MIN;

        

        aux = 1;

        

        while(aux > 0){

            scanf("%d", &n);

        

            for (i = 0; i < n; i++){

                scanf("%d", &vetor);

            }

            for (i = 0; i < n; ++i) {

                if (i == 0){

                    maior = vetor;

                }else if(vetor > maior){

                    maior = vetor;

                }

            }

            for (k = 0; k < n; k++)

            {

                if (maior == vetor[k])

                {

                    printf("%d %d\n", k, maior);

                }

            }

            aux = n;

        }

    }

    • Curtir 1
  12. @brund321

    Em 19/11/2019 às 01:19, brund321 disse:

    @Eduardo_BrazOi Eduardo, segue algumas observações:

    
    while(1){
      scanf("%d",&n);
      if(n <= 1000){
        break;
      }
    }
    //no while você precisa quebrar quando o n for entre 1 e 1000, nesse caso se o n fosse -10 ele "aceitaria" e quebraria o loop o que não é o que você deseja
    //então você também precisa verificar se o n é maior que 0 para quebrar o loop
    //ficaria assim:
    while(1){
      scanf("%d",&n);
      if(n <= 1000 && n > 0){
        break;
      }
    }
    
    for (i = 0; i < n; i++){
      scanf("%d", &vetor);
    }
    //aqui o correto para colocar o valor dentro do vetor não seria assim ? 
    scanf("%d", &vetor[i]);
    
    for (j = 0; j < n; j++){
    	if(k >= vetor[j]){
    		total ++;
    	}
    }
    //aqui você precisa passar por cada valor do vetor e verificar se esse valor é maior ou igual a k
    //você está verificando se k é maior ou igual que o valor do vetor, você está fazendo exatamente o contrário
    //ficaria assim
    for (j = 0; j < n; j++){
    	if(vetor[j] >= k){
    		total++;
    	}
    }

    Abraço.

    Muito obrigado vou estudar ele

     

    • Amei 1
  13. @brund321 Muito obrigado

    adicionado 5 minutos depois
    adicionado 14 minutos depois

    @brund321 Ele ainda está com erro no último for

     

    #include <stdio.h>

    int main(){
      int aux, v, n, vetor[1000], i, k, j, total, l;
        while(1){
            scanf("%d",&n);
            if(n <= 1000){
                break;
            }
        }
        for (i = 0; i < n; i++){
            scanf("%d", &vetor);
        }
        
        scanf("%d", &k);
        
        for (j = 0; j < n; j++){
            if(k >= vetor[j]){
                total ++;
            }
        }
        
      printf("%d\n", total);
    }

    adicionado 14 minutos depois
    14 minutos atrás, Eduardo_Braz disse:

    for (j = 0; j < n; j++){
            if(k >= vetor[j]){
                total ++;
            }
        }

    Nesse

    • Amei 1
  14. @brund321 Assim compreendi 

    adicionado 9 minutos depois
    12 minutos atrás, brund321 disse:

    @Eduardo_Braz Veja essa parte com atenção, se o j vai ter o valor de n (j = n), como o j vai ser maior que o n(j > n)?

    
    for(j = n; j > n; j--){
    
    }

     

    Assim?

     

    #include <stdio.h>

    int main(){
      int aux, v, n, vetor[1000], i, k, j, total, l;
      while(v == 0){
        scanf("%d",&aux);
        if(aux >= 1 && aux <= 1000){
          n = aux;
          v = 1;
        }
        else{
          scanf("%d",&aux);
        }
      }
      for (i = 0; i < n; i++){
        scanf("%d", &vetor);
      }
      scanf("%d", &k);
      
      for (j = n; j >= 0; j--)
      {
        if (k >= vetor[j])
        {
          total++;
        }
      }
      printf("%d\n", total);
    }

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!