kokin Posted April 25, 2009 at 12:32 PM Report #258966 Posted April 25, 2009 at 12:32 PM Sou novo aluno de programaçao ? e comecei a aprender a pouco tempo as strings e tou com muita dificuldade neste exercicio.Não me rezondem porque eu não entendo de strings a 100% aprendi ontem a mexer com elas e tenho o seguinte exercicio para o fazer. Já fix o andamento das strings. So que não sei fazer a junção delas(concatenação) na variavel maximo.Tentei de varias formas.O que me deve faltar? ? Sei que tem muita coisa ai errada mas é normal. Exercicio: Escrever um programa que leia sucessivas strings até ser especificado “.”. Neste momento o programa deve escrever uma única string que consiste na concatenação de todas as strings lidas. Cada string deverá ter no máximo 20 caracteres. Após a concatenação, no máximo a string pode ter 100 caracteres. Podes definir variáveis para estes máximos da seguinte forma: #include <stdio.h> #include <string.h> #define my_scanf(text, var) \ scanf(text, var); \ getchar(); void my_scanf_long(char* s, int n) { fgets(s, n, stdin); s[strlen(s)-1] = '\0'; } int main() { int i; char parar=".", texto[20], maximo[100]=""; // Digitaçao do texto e o andamento Infinito for (i=0;i<texto;i++) { printf("\nDigite uma String:"); my_scanf_long(texto, 20); } if(strlen(texto)==strlen(parar)){ strcpy (maximo, texto); strcat(texto, parar); } printf("A string final e : %s", texto); return 0; } Tou com muitas dificuldades espero que me ajudem e se não for pedir muito expliquem-me 🙂
Rui Carlos Posted April 25, 2009 at 01:20 PM Report #258977 Posted April 25, 2009 at 01:20 PM Deves usar o strcat, para adicionar texto a maximo. E deves realizar esta operação de cada vez que lês uma string. Actualmente estás a ler uma string, e a ler outra por cima, sem que tenhas guardado a string anterior noutro lado. Precisas também de alguma coisa dentro do ciclo que te diga quando parar (deves ver se a string lida é igual a "."). Rui Carlos Gonçalves
kokin Posted April 25, 2009 at 01:30 PM Author Report #258982 Posted April 25, 2009 at 01:30 PM int main() { int i; char parar=".", texto[20], maximo[100]=""; // Digitaçao do texto e o andamento Infinito for (i=0;i<texto;i++) { printf("\nDigite uma String:"); my_scanf_long(texto, 20); strcat(texto, maximo); } if(strlen(texto)==strlen(parar)){ strcat(texto, maximo); } printf("A string final e : %s", texto); return 0; } E assim ou algo ta mal a ai? o parar já não esta a querer dizer ´.´como eu declarei a variavel em char char parar=".", texto[20], maximo[100]=""; ?
Rui Carlos Posted April 25, 2009 at 01:33 PM Report #258984 Posted April 25, 2009 at 01:33 PM Se calhar é melhor declarares o parar como string. Onde é que estás a verificar se foi introduzido "."? E para que é aquele if fora do ciclo? Qual é a ideia aqui: i<texto? Rui Carlos Gonçalves
kokin Posted April 25, 2009 at 01:38 PM Author Report #258985 Posted April 25, 2009 at 01:38 PM tipo o meu objetivo e criar um programa que leia sussecivas strigs na vertical. texto é a escrita das strings. Casa (So pode ter ate 20 catecteres) Rato (So pode ter ate 20 catecteres) Teclado (So pode ter ate 20 catecteres) Mesa (So pode ter ate 20 catecteres) etc (So pode ter ate 20 catecteres) "infinito" Quando introduzir o ´.´(ponto o programa me fara a conjunção de todas a strings numa so) ou seja: CasaRatoTecladoMesa(Mas isto não poderá passar de 100 carecteres)
Rui Carlos Posted April 25, 2009 at 01:56 PM Report #258991 Posted April 25, 2009 at 01:56 PM Já percebi o objectivo no post inicial. De qualquer forma, não respondeste a nenhuma das questões que coloquei, que basicamente dizem as falhas que me parece que o teu programa tem. Rui Carlos Gonçalves
Solution kokin Posted April 25, 2009 at 02:27 PM Author Solution Report #258996 Posted April 25, 2009 at 02:27 PM #include <stdio.h> #include <string.h> main() { char nome[20], maximo[100]="", parar[10]= "." ; do{ printf("Escreve um nome: "); gets(nome); if(strlen(nome)<=20){ strcat(maximo, nome); }else printf("nome com mais de 20 caracteres\n"); }while((strcmp(nome, parar)!=0) && strlen(maximo)<100); //Declaracao dos mesmos. printf("Conjucao= %s Numero de caracteres[%d]\n\n\n\n", maximo, strlen(maximo)); return 0; } Já consegui. Thx tava me a entalar todo mas depois percebi que com o while resolvia me a situação... Com o ciclo for leva me muits condições das quais já me estava a entalar.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now