• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

kokin

Exercio de Esc ... Strings

7 mensagens neste tópico

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? :hmm:

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

:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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]="";

:hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora