embaralhar string

1. embaralhar string

Vanessa
vanessabs

(usa Nenhuma)

Enviado em 17/11/2014 - 10:34h

crie um programa que seja capaz de embaralhar uma string S1 com uma string S2 e colocar o resultado em uma string S3. Para embaralhar S1 com S2 é necessário preencher os índices pares de S3 com os elementos de S1 e os ímpares com os elementos de S2 até que os elementos de uma das duas strings termine. Os demais elementos de S3 serão preenchidos com os elementos da string restante.


o que eu fiz foi o seguinte:



void embaralha(char s1[], char s2[], char s3[])
{
int i;

for(i=0;s1[i] !='{TTEXTO}';i++)
{
s3[i]=s1[i];
s3[i]=s2[i+1];
}
}

int main(void)
{

char s1[41], s2[41], s3[41];
int i;
printf("Entre com a primeira palavra: \n");
scanf("%s", s1);

printf("Entre com a segunda palava:\n");
scanf("%s", s2);


embaralha(s1,s2,s3);

printf("palavra formada: %s\n", s3);

printf("\n");

system("pause");
}




mas nao esta embaralhando. fiz algo errado?

teria como em da um ideia de como mais poderia embarlhar a string.


agradeço desde ja



  


2. Ponteiros

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 28/11/2014 - 07:43h

Olá,

Vou colocar o programa pronto pra você estudar.
Recomendo que você estude sobre matrizes! Esse foi o erro do seu programa.


// embaralha.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define STR_SIZE 100
#define STRING(a) (char*)malloc(a*sizeof(char));

char *embaralha ( char *a, char *b ) {
char *c = STRING ( STR_SIZE * 2 );
char *s = c;

if ( !c ) return NULL;

while ( *a || *b ) {
if ( *a ) *(s++) = *(a++);
if ( *b ) *(s++) = *(b++);
}

return c;
}

int main ( int argc, char *argv[] ) {
if ( argc == 3 )
printf ( "%s\n", embaralha ( argv[1], argv[2] ));

return 0;
}


E pra compilar e rodar:


[ prog ] # gcc -o embaralha embaralha.c
[ prog ] # ./embaralha Enzo Ferber
EFnezrober
[ prog ] #


[]'s
Enzo








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts