Red_Beret Posted April 17, 2006 at 11:53 AM Report Share #22515 Posted April 17, 2006 at 11:53 AM Ppl, alguem me ajuda a resolver este problema? 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 difícil, pois quase que aposto que existe uma maneira menos complicada de fazer isto. Alguém sabe? Link to comment Share on other sites More sharing options...
David Pintassilgo Posted April 17, 2006 at 12:48 PM Report Share #22521 Posted April 17, 2006 at 12:48 PM 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! 😞 cool stuffs to check. http://blog.zxcoders.com// Link to comment Share on other sites More sharing options...
Gurzi Posted April 17, 2006 at 01:10 PM Report Share #22523 Posted April 17, 2006 at 01:10 PM 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 :\ ? Link to comment Share on other sites More sharing options...
Red_Beret Posted April 17, 2006 at 02:43 PM Author Report Share #22533 Posted April 17, 2006 at 02:43 PM 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. Link to comment Share on other sites More sharing options...
Warrior Posted April 17, 2006 at 07:28 PM Report Share #22567 Posted April 17, 2006 at 07:28 PM 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 Link to comment Share on other sites More sharing options...
Gurzi Posted April 17, 2006 at 07:42 PM Report Share #22570 Posted April 17, 2006 at 07:42 PM 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 Link to comment Share on other sites More sharing options...
Red_Beret Posted April 17, 2006 at 10:07 PM Author Report Share #22597 Posted April 17, 2006 at 10:07 PM 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 Link to comment Share on other sites More sharing options...
Gurzi Posted April 18, 2006 at 08:31 AM Report Share #22613 Posted April 18, 2006 at 08:31 AM 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 Link to comment Share on other sites More sharing options...
brink@ero Posted April 18, 2006 at 11:07 AM Report Share #22627 Posted April 18, 2006 at 11:07 AM 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"); } Link to comment Share on other sites More sharing options...
Red_Beret Posted April 18, 2006 at 12:18 PM Author Report Share #22631 Posted April 18, 2006 at 12:18 PM tks. é isso mesmo. Só uma pergunta, o system(pause) serve para que? Link to comment Share on other sites More sharing options...
brink@ero Posted April 18, 2006 at 12:21 PM Report Share #22632 Posted April 18, 2006 at 12:21 PM 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. Link to comment Share on other sites More sharing options...
Red_Beret Posted April 18, 2006 at 12:24 PM Author Report Share #22633 Posted April 18, 2006 at 12:24 PM ah,ok. é que como eu uso o VS, ele faz isso automaticamente. Link to comment Share on other sites More sharing options...
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