All pastes #1853904 Raw Edit

Something

public text v1 · immutable
#1853904 ·published 2010-03-27 14:47 UTC
rendered paste body
Napisati funkciju ciji je prototip

 char *Spoji(char *niz1, char *niz2)

koja ce stvoriti novi niz koji bi nastao naizmjeninim uzimanjem znakova iz niza1 i niza2 (dakle, prvi znak iz niza1, pa prvi znak iz niza2, pa drugi znak iz niza1, pa drugi znak iz niza2 itd. Nakon to se jedan od nizova iscrpi nadopisati preostale znakove iz onog drugog niza). Npr. ukoliko su ulazni nizovi bili "ABCDEFGH" i "123" stvoreni niz ce biti "A1B2C3DEFGH". Funkcija mora vratiti pokazivac na novostvoreni niz znakova. Mozete pretpostaviti da niz1 i niz2 nisu NULL pokazivaci, ali mogu biti prazni te u tom sluaju treba vratiti pokaziva na niz znakova duljine 0.

Doputene biblioteke funkcija: stdio.h, string.h, stdlib.h

Obavezno koristiti funkciju malloc (ili realloc)!

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


char *Spoji(char *niz1, char *niz2){
      char *p;
      int i=0,k=0,l=0;
      p=(char*)malloc(sizeof(char)); 
      
      while((niz1!=NULL)||(niz2!=NULL))
      {
                  
                  if(niz1!=NULL){
                  p[i]=niz1[k];
                  i++;
                  p=(char*)realloc(p,i*sizeof(char));
                  k++;}
                  
                  if (niz2!=NULL){
                  p[i]=niz2[l];
                  p=(char*)realloc(p,i*sizeof(char));
                  p[i++];
                  l++;}               
                  
      } p[i]='\0';
    return &p[0];
}
            

int main()
{  
   char pa1[]="ABCDEFGH", pa2[]="123";
   char *h,*j,*novi=(char*)malloc(9*sizeof(char));
   int n,i=0;
   
   novi=Spoji(&pa1[0],&pa2[0]);
   n=strlen(novi);
   
/*

for(i=0;i<9;i++)
   novi[i]=pa1[i];
   
   for(i=0;i<9;i++)
   printf("%c",novi[i]);
   
   novi=(char*)realloc(novi,12*sizeof(char));
   if(novi==NULL)
   exit (-1);
   
   novi[8]='4'; novi[9]='5'; novi[10]='6';novi[11]='7';novi[12]='\0';*/
   
   n=strlen(&novi[0]);
   printf("%d\n",n);

   for(i=0;i<n;i++)
   printf("%c",novi[i]);
    



  system("PAUSE");	
  return 0;
}