Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

Red_Beret

[Resolvido] Juntar duas strings?

Mensagens Recomendadas

Red_Beret    0
Red_Beret

Ppl, alguem me ajuda a resolver este problema?

O enunciado é o seguinte

capturaecra1ed.png

Eu fiz assim:

#include  <stdio.h>

char adic (char *string1, char *string2, int num){
int ct,ct2,ct3,ct4,ct5,ct6,ct7,tamanho=0;
char aux[100];
for (ct=0; string1[ct]!='/0';ct++){
	tamanho++;
}
if (tamanho < num)
	return -1;
else{
	for (ct2=0; ct2<num; ct2++){
		aux[ct2]=string1[ct2];
	}
	for(ct3=ct2+1, ct4=0; string2[ct4]!='/0'; ct3++, ct4++){
		aux[ct3]=string2[ct4];
	}
	for(ct5=ct3+1, ct6=ct2; string1[ct6]!='/0';ct5++, ct6++){
		aux[ct5]=string1[ct6];
	}
	for(ct7=0; aux[ct7]!='/0'; ct++){
		string1[ct]=aux[ct];
	}
	return *string1;
}
}

void main(){
char string1[100], string2[50];
int num;
printf("Introduza a primeira frase (maximo 50 caracteres)\n");
gets(string1);
printf("Introduza a segunda frase (maximo 50 caracteres)\n");
gets(string2);
printf("Introduza a posição\n");
scanf("%d", &num);
printf("%c", adic(string1,string2, num));
}

Claro, que está completamente mal. PAra além disso, fui pelo lado mais dificil, pois quase que aposto que existe uma meneira menois complicada de fazer isto.  Alguem sabe?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
David Pintassilgo    5
David Pintassilgo

Assim por alto penso que vais ter de concatenar as duas string's, agora o codigo para isso, nao fasso ideia, mas os masters do C já ai aparecem! :(

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

bem primeiro que tudo o enunciado ali manda uma gafe, se é para juntar a partir da posição 'n' á string1 pk é que ele diz que "Caso a posicao seja inválida(se a dimensão da string 1 for inferior à posição).

Acho que é "Caso a dimensao da string2 for inferior à posicao, porque a string 1 fica intacta.

não entendo se é para juntar á string 1 certo conteudo da string 2 (definido pela posiçao) ou se é a partir de certa posiçao adicionar o conteudo da string2, pode ser entendido o enunciado de 2 maneiras diferentes :\  :-[

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Red_Beret    0
Red_Beret

Pelo que percebi do enunciado, é para fazer assim:

String1 - A Joana foi a fonte

String2 - O João tb

POS - 8

Return - A Joana O João tb foi a fonte.

Ou seja, por a string 2 dentro da 1.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Warrior    68
Warrior

Eu só vejo um problema.. A função devolve uma string ou devolve o numero? Porque ao declarar a função temos que indicar o que ela vai devolver..

A alternativa é ela ser um procedimento, e alterar a string 1 caso seja possivel, e caso nao seja imprimir -1..

Vou tentar resolver de qualquer forma

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

char str1[40];
char str2[40];


char *adic(char *x,char *y,int POS)
{

  j= strlen(y);
  
  if(POS > j)
  {  
    printf("POSICAO ERRADA");
    getchar();
    exit(0);
  }
else
  for (i=strlen(x)-1;y[POS] !='\0';POS++,i++)
    x[i] = y[POS]; 
return x;
}

main()
{

printf("Introduza a string1\n");
gets(str1);
printf("Introduza a string2\n");
gets(str2);
printf("Introduza a posicao \n");
scanf("%d",&pos);
adic(str1,str2,pos);
printf("string final : %s",adic(str1,str2,pos) );
}

tinha feito assim mas se fosse para juntar a partir da x posição da string 2 á string 1 que fica intacta,  não sei se  o code está certo, alguem que veja sff

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Red_Beret    0
Red_Beret

Não dá. 

Fica assim

Introduza a string1

O joao foi a fonte

Introduza a string2

a maria ira tambem

Introduza a posicao

8

string final : O joao foi a fontira tambeira tambem

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

hmm,, não testei mas já não começa mal.

Eu fiz a partir da posição 'n' da string 2 e ele começa ja em ira (POS 8) , agora aparece ira tambem 2 vezes, quando chegar a casa vejo isso,

abraço

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
brink@ero    0
brink@ero

Experimenta isto:

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


short adic(char *x,char *y,int pos)
{
int dim_x, dim_y, count;

count=-1;
dim_x=(int)strlen(x);
dim_y=(int)strlen(y);

if(dim_x<pos)
	return -1;
else
{
	while(count++<dim_y-1)
		x[pos+count-1]=y[count];
	if((pos+count)>dim_x)
		x[pos+count-1]='\0';
	return 0;
}
}

main()
{
char	str1[40],
	   str2[40];
int	  pos;

printf("Introduza a string1:\n");
gets(str1);
printf("Introduza a string2:\n");
gets(str2);
printf("Introduza a posicao:\n");
scanf("%d",&pos);
if(adic(str1,str2,pos)==-1)
	printf("*** Error: a posicao e' maior que a dimensao da string1! ***\n");
else
	printf("string1 final:\n%s\n",str1 );

system("pause");
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
brink@ero    0
brink@ero

tks. é isso mesmo.

Só uma pergunta, o system(pause) serve para que?

Serve para fazer uma pausa no programa antes deste encerrar.

É o mesmo que:

printf("prima qualquer tecla para continuar...");

getchar();

getchar();

Penso eu de que...

Se quiseres podes apagar.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade