Ir ao conteúdo

Posts recomendados

Postado

Problema: Crie uma variavel 3D para armazenar o nome e cpf de 3 pessoas. O programa deve ordenar e imprimir o nome e cpf ordenandos alfabeticamente. Utilize ponteiros.

Consigo colocar em ordem alfabética mas os números do cpf não trocam conforme a posição do nome, sem falar que repete os dois últimos nomes em um 3 coluna, alguém poderia me ajudar?

#include <stdio.h>
#include <string.h>

void main()
{
  /* declaracao dos vetores*/
  
     /* declaracao dos ponteiros*/
    char mat[3][2][100];
    char *p_mat [3][2]; 
    char aux[100];
    int i,j, y, z, x;
   
    /* Leitura da Matriz: */
    printf("\n\nEntre com nome e cpf:");
    for (i=0; i<3; i++)
    {
      printf("\nLinha %d: ",i+1);
      for (j=0; j<2; j++)
      {
        scanf("%s", mat[i][j]);
       p_mat[i][j] = mat[i][j];
      }
    }

    for (i=0; i<3; i++){
         for (x=i+1; x<3; x++){    
         z = strcmp (mat[i], mat[x]);
         if(z>0)
         {
        strcpy(aux, mat[i]);
        strcpy (mat[i], mat[x]);
        strcpy(mat[x],aux);
         }    
       }
     }

   /* Impressao: */
    printf("\n");
    for (i=0; i<3; i++)
    {
      printf("\n-");
      for (j=0; j<3; j++)
        printf("\t %s \t", p_mat[i][j]);
    }
     


}

 

nada.png

  • Amei 1
Postado

@Skarth Skarleth    creio que seja por que você não colocou a segunda dimensão da matriz , na hora de comparar e nem na hora de pegar os dados de uma posição e colocar na outra , ali nessas linha :

strcpy(aux, mat[i][0]);  

strcpy (mat[i][0], mat[x][1]);

Postado

Respondi sobre isso em outro tópico, veja se ajuda,

 

6 horas atrás, Midori disse:

A variável aux não precisa ser uma matriz multidimensional, pode ser uma string com o tamanho máximo de caracteres.

 

Para ordenar use algum algoritmo de ordenação como o bubblesort. Um exemplo com esse algoritmo para cinco nomes que você pode adaptar no seu código,

 



#include <stdio.h>
#include <string.h>

int main(){
    char mat[5][2][100] = {
        {"Nome Y", "222222"},
        {"Nome R", "555555"},
        {"Nome A", "777777"},
        {"Nome C", "999999"},
        {"Nome N", "111111"}
    };
    int i, j;

    for (i = 1; i < 5; i++){
        for (j = 0; j < 5 - 1; j++){
            if (strcmp(mat[j][0], mat[j + 1][0]) > 0){
                char aux[100];
                
                strcpy(aux, mat[j][0]);
                strcpy(mat[j][0],mat[j + 1][0]);
                strcpy(mat[j + 1][0], aux);

                strcpy(aux, mat[j][1]);
                strcpy(mat[j][1],mat[j + 1][1]);
                strcpy(mat[j + 1][1], aux);
            }
        }
    }

    for(i = 0; i < 5; i++){
        printf("%s, %s\n",mat[i][0],mat[i][1]);
    }
    return 0;
}

 

 

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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