Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xMaiicon

[Resolvido] Ler um nome e retorná-lo

Recommended Posts

Então, estou começando a aprender linguagem C, usando o Dev-C++, e como um exercício a mim mesmo, resolvi fazer um programa em que o usuário digita quantas palavras o nome contém, digita seu nome, o programa lê o nome, retorna ele, e também retorna ele com todas as iniciais transformadas para maiúsculas, primeiro quero fazer ele ler e retornar o nome, quando o nome tem 5 ou 4 palavras, tudo bem, faz certinho, já se tiver 3, 2 ou 1 palavra, ele retorna o nome e alguns símbolos depois, podem me ajudar com isso?

 

Código

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

main()
{
     char nome[5][25];
     int i,n;       
     printf("Digite o numero de palavras em seu nome, no maximo 5\n");
     scanf("%d",&n);
     printf("Digite seu nome\n");
     for (i=1;i<=n;i++)
     {
         scanf(" %s",nome[i-1]);
     }
     if (nome[4]==0) printf("\n%s %s %s %s\n",nome[0],nome[1],nome[2],nome[3]);
     if (nome[3]==0) printf("\n%s %s %s\n",nome[0],nome[1],nome[2]);
     if (nome[2]==0) printf("\n%s %s\n",nome[0],nome[1]);
     if (nome[1]==0) printf("\n%s\n",nome[0]);
     else printf("\n%s %s %s %s %s\n",nome[0],nome[1],nome[2],nome[3],nome[4]);
     system("pause");
}

 

OBS: se eu colocar "else if" ao invés de "if" nas matrizes nome[3] [2] e [1] o resultado é o mesmo ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe mas, eu não pude editar novamente o post, então tive que respondê-lo:

 

Fiz uma modificação no código, arrumei o erro antigo, mas agora ele não mostra o nome que foi digitado, tentei de 2 formas, tentei com o strcpy também e não deu, aí vai:

 

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

void strtolower(char *string)
{
 while(*string)
 {
   *string = tolower(*string);
   string++;
 }
}

int main(int argc, char *argv[])
{
     char nome[5][25],nome2[5][25];
     int a,b,c,d,i,n;       
     printf("Digite o numero de palavras em seu nome, no maximo 5\n");
     scanf("%d",&n);
     printf("Digite seu nome\n");
     for (i=1;i<=n;i++)
     {
         scanf("%s",nome[i-1]);
     }
     for (c=0;c<25;c++)
     {
         nome2[0][c] = nome[0][c];
         nome2[1][c] = nome[1][c];
         nome2[2][c] = nome[2][c];
         nome2[3][c] = nome[3][c];
         nome2[4][c] = nome[4][c];
         //for (d=0;d<=25;d++)
         //{
         //    nome2[c][d] = nome[c][d];
        // }
     }  
     printf("\n\n");
     printf("Nome digitado: ");
     for (b=0;b<n;b++);
     {
         printf("%s ",nome2[b]);
     }
     printf("\n\n");
     printf("Modo certo de escrever: ");      
     for (a=0;a<n;a++)
     {
         strtolower(nome[a]);
         nome[a][0] = toupper(nome[a][0]);
         printf("%s ",nome[a]);
     }
     printf("\n\n");
     system("pause");
     return 0;
}

 

Imagem:

 

33zeow3.jpg

 

Nessa imagem eu coloquei pra digitar 2 nomes, mas acontece o mesmo com 1, 3,4 e 5 nomes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza xMaiicon.

 

Que bom que conseguiu resolver o seu problema.

 

Vou lhe dar algumas dicas:

 

- Como boa prática de programação tenha costume de sempre comentar o máximo possível o seu código, Pois com o tempo será muito mais fácil relembrar o que você fez em determinado trecho se ele estiver comentado.

 

- Outra, não utilize o DEVC++ pois além de ser uma IDE que está descontinuada, é cheia de bugs e antiga.

Recomendo a IDE Code::Blocks umas das melhores ferramentas Open Source e multi-plataforma hoje em dia.

 

Segue o link para download:

http://www.codeblocks.org/downloads

 

Espero ter ajudado, FLW! :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.