Ir ao conteúdo

Posts recomendados

Postado

Crie uma variável 3D para armazenar o nome e cpf de 10 pessoas. O programa deve ordenar e imprimir o nome e cpf ordenandos alfabeticamente. Utilize ponteiros.

Uma variável 3D seria uma matriz [][][].

  • Triste 1
  • Membro VIP
Postado

Caro usuário,

 

Seja bem-vindo ao Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

Postado

Não tem partes em int, é só char.

 

Entendo que na declaração a matriz terá as três dimensões para: linha, coluna e tamanho de caracteres dos registros.

 

Postado

Estou tentando inicialmente fazer a entrada intercalada de dados.. mas nem isso não sei muito bem! Depois que isso estiver ok eu vejo como fazer para imprimir em ordem alfabética e como utilizar ponteiros.

#include <stdio.h>

int main(){
      
   char matriz[10][30][12];
   int i, j, k;
    printf("Digite o Nome: \n");
    scanf("%c", j); 
    printf("Digite o CPF: \n");
    scanf("%c", k); 
    
     for( i =0 ; i<10 ; i++)
    {
        for(j =0; j<30 ; j++)
        {
            
            for(k=0; k<12 ; k++)
            {
              
         scanf("%c",&matriz[i][j][k]);
      
            }
            
        }
    }

        printf("\n\n\n");
    
    
    for( int  i =0 ; i<10 ; i++)
    {
        for(int  j =0; j<30 ; j++)
        {
            
            for(int  k=0; k<12 ; k++)
            {
              
         printf("%c\n" ,matriz[i][j][k]) ;
            }
         
        }
    }

        
    
    return 0;
    
}

 

Postado

No scanf você está tentando pegar cada caractere, mas deve pegar a string de uma vez. Acho melhor usar fgets em vez de scanf.

 

Não precisa tantos loops, basta um para o input e outro para mostrar os dados. Veja que a matriz eu declarei com 10 linhas, 2 colunas e 20 caracteres para os registros. A primeira coluna é a do nome e a segunda do CPF.

 

#include <stdio.h>

int main(){
    char matriz[10][2][20];
    int i = 0;
    
    while(i < 10){
        printf("Digite o Nome: ");
        fgets(matriz[i][0],20,stdin);
        
        printf("Digite o CPF: ");
        fgets(matriz[i][1],20,stdin);
        i++;        
    }
    i = 0;

    while(i < 10){
        printf("*%s",matriz[i][0]);
        printf("*%s\n",matriz[i][1]);
        i++;        
    }
    return 0;
}

 

  • Curtir 1
Postado

Agora estou tentando organizar a impressão em ordem alfabética, mas algo da errado.. o nome da certo, mas a parte do cpf não.

#include <stdio.h>
#include <string.h>
int main () /* Declara a funcao principal de inicio do programa, seu tipo de retorno e seu argumento */
{
int count, i, j, t;
char mat[10][2][100], aux[10][2][100]; 
char *p;

/* Entrada de dados e armazenamento na matriz tridimensional de 10 linhas e duas colunas com 100 char cada */
for (count = 0; count < 10; count++)
{
printf ("\nEntre com o nome da pessoa %d: ", count+1); /* Função que imprime na tela e solicita ao usuário a entrada de dados*/
gets (mat[count][0]); /* Armazena a entrada de dados na variavel nome */
printf ("\nEntre com o cpf da pessoa %d: ", count+1); /* Função que imprime na tela e solicita ao usuário a entrada de dados*/
gets (mat[count][1]); /* Armazena a entrada de dados na variavel nome */
}

/* Organização dos dados atraves do retorno da função strcmp */
for (i = 1; i < 10; i++) 
{ 
   for (j = 1; j < 10; j++) 
   {
         if (strcmp(mat[j - 1][0], mat[j][0]) > 0)
      {
         strcpy(aux[j - 1][0], mat[j - 1][0]);
         strcpy(aux[j - 1][1], mat[j - 1][1]);
         strcpy(mat[j - 1][0], mat[j][0]);
         strcpy(mat[j - 1][1], mat[j][1]);
         strcpy(mat[j][0], aux[j][0]);
         strcpy(mat[j][1], aux[j][1]);
         
      }
   }
}

/* Impressão dos dados com a utilização de ponteiros */
p=mat[0]; /* Inicialização do ponteiro p para a linha inicial de mat */
for (count=0;count<20;count++) /* Função que inicia um contador*/
{
printf (" %s\n", *p); /* Imprime o conteudo do ponteiro */
p++; /* Incrementa o endereço do ponteiro */
}

 
return(0); /* Retorno da funcao main */
}

 

Postado

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

 

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!