[ Jcod3r @ 01.03.2008. 18:18 ] @
Pozdrav !

Od niza karaktera trebam napraviti prikaz poput pjescanog sata.

npr...

EDIT: X Files, [ pre ] tagovi


Hello World
ello Worl
llo Wor
lo Wo
o W

o W
lo Wo
llo Wor
ello Worl
Hello World


Code:

#include <stdio.h>


int main(void){

    char S[100]="Hello world";
    int i,L;
    
    for(i=0;S[i]!='\0';i++);
    L=i;
    for(i=0;i<L;i++)
        printf("%s\n",S);
        
    return 0;

}

[ X Files @ 01.03.2008. 19:40 ] @
Možda ovako (i naravno, može se i dalje optimizovati):
Code:

int main()
{
   char text[] = "Hello world";
   int i, j, k;
   for ( i=0; i<(int)(strlen(text)/2.+.5); i++ )
   {
      for ( j=0; j<i; j++ )
         printf( "%c", ' ' );
      for ( k=i; k<strlen(text)-i; k++)
         printf( "%c", text[k] );
      printf("\n");
   }
   for ( i-=2; i>=0; i-- )
   {
      for ( j=0; j<i; j++ )
         printf( "%c", ' ' );
      for ( k=i; k<strlen(text)-i; k++)
         printf( "%c", text[k] );
      printf("\n");
   }
   system("PAUSE");
   return 0;
}
[ Jcod3r @ 01.03.2008. 20:41 ] @
Hvala puno :) (i naravno, mnogo mi je pomoglo i u drugim problemima) :)
[ Jcod3r @ 09.03.2008. 18:59 ] @
Pozdrav !

Evo profine verzije : )
Da neprevodim.
Code:

//Exercice5correction V2.c SD 27/02/08

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

#define CACHE ' '
#define DIM 100

char *transformeLaChaine(char *telleChaine,int telMontant, int telDescendant)
{
    telleChaine[telMontant]=telleChaine[telDescendant]=CACHE;
    return telleChaine;
}

char *restitueLaChaine(const char *telleOriginale,char *telleChaine,int telMontant, int telDescendant)
{
    telleChaine[telMontant]=telleOriginale[telMontant];
    telleChaine[telDescendant]=telleOriginale[telDescendant];
    return telleChaine;
}

void dessinePointeEnBas(char *telleChaine)
{
    int leMontant=0,leDescendant=0;

    printf("%s\n",telleChaine);
    for(leMontant=0, leDescendant=strlen(telleChaine)-1; leMontant< leDescendant ; ++leMontant, --leDescendant)
        printf("%s\n",transformeLaChaine(telleChaine,leMontant,leDescendant));

}

void dessinePointeEnHaut(const char *telleOriginale,char *telleChaine)
{
    int leMontant=0,leDescendant=0;
    int leDebut=0,laFin=strlen(telleChaine)-1;
    for(leMontant=0, leDescendant=laFin; leMontant< leDescendant ; ++leMontant, --leDescendant)
        transformeLaChaine(telleChaine,leMontant,leDescendant);
    for(; leMontant>=0 && leDescendant<=laFin ; --leMontant, ++leDescendant)
        printf("%s\n",restitueLaChaine(telleOriginale,telleChaine,leMontant,leDescendant));

}

int main (void) {
    char lOriginale[]="tagada tsointsoin";
    char laChaine[DIM];
    strcpy(laChaine,lOriginale);
    dessinePointeEnBas(laChaine);
    dessinePointeEnHaut(lOriginale,laChaine);
    return 0;
}