xMaiicon 0 Denunciar post Postado Junho 20, 2012 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
xMaiicon 0 Denunciar post Postado Junho 20, 2012 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: 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
xMaiicon 0 Denunciar post Postado Junho 20, 2012 consegui arrumar T_T, peço desculpas pelo tópico, pode deletar mesmo T_T Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Junho 20, 2012 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