Ir ao conteúdo
  • Cadastre-se

C++ Cadastro de 10 pessoas com ponteiros


Posts recomendados

  • Moderador

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

Link para o post
Compartilhar em outros sites

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

 

Link para o post
Compartilhar em outros sites

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
Link para o post
Compartilhar em outros sites

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 */
}

 

Link para o post
Compartilhar em outros sites

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

 

 

Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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...

minicurso-montagem-popup.jpg

MINICURSO GRÁTIS!

Como ganhar dinheiro montando computadores!

CLIQUE AQUI E INSCREVA-SE AGORA MESMO!