• 18-04-2014, 00:30:36
    #1
    Merhaba arkadaşlar. Char tipindeki bir diziyi yazdırıyorum.

    girilen string; yasardemirtas#

    bu string şu şekilde yazdırıyorum.
    y
    as
    ard
    emir
    tas#+

    burda sorunum yok. fakat bunu yazdırdıktan sonra karakter hataları yazdırıyor.

    char metin[100];
    int j;
    for(i=0;i<=strlen(metin);i++)
    {
    for(j=i*(i+1)/2;j<=i*(i+1)/2+i;j++)
    {
    putchar(metin[j]);
    }
    printf("\n");
    }

    [IMG][/IMG]

    Bu konuda bilgisi olan yardımcı olabilir mi ? :/
  • 18-04-2014, 02:52:27
    #2
    hocam kodunuzun for loopları çok karışık geldi bana keşke daha basit düşünsemişsiniz, karakter bitene kadar ilk loop ikinci loop ise ilk loopun kaç kere döndüğü kadar karakter yazdırırsa iş biter, kodunuzu anlamak için vakit kaybetmeden yeni bitanesini yazdım



    	 char c, sentence[80];
         int length = 0;
         puts("Enter a line of text: \n");
    
    	while (( c = getchar()) != '\n')
    		sentence[length++] = c;
    	sentence[length] = '\0';
    	printf("\n");
    	int i=0,j=0;
    	int counter = 0;
    	while(length>=0)
    	{
    		for(j=0;j<=i && length>=0;j++){
    			putchar(sentence[counter++]);
    			length--;
    		}
    	printf("\n");
    	i++;
    	}
    Kolay Gelsin..
  • 18-04-2014, 05:11:55
    #3
    ilkerxx adlı üyeden alıntı: mesajı görüntüle
    hocam kodunuzun for loopları çok karışık geldi bana keşke daha basit düşünsemişsiniz, karakter bitene kadar ilk loop ikinci loop ise ilk loopun kaç kere döndüğü kadar karakter yazdırırsa iş biter, kodunuzu anlamak için vakit kaybetmeden yeni bitanesini yazdım



    	 char c, sentence[80];
         int length = 0;
         puts("Enter a line of text: \n");
    
    	while (( c = getchar()) != '\n')
    		sentence[length++] = c;
    	sentence[length] = '\0';
    	printf("\n");
    	int i=0,j=0;
    	int counter = 0;
    	while(length>=0)
    	{
    		for(j=0;j<=i && length>=0;j++){
    			putchar(sentence[counter++]);
    			length--;
    		}
    	printf("\n");
    	i++;
    	}
    Kolay Gelsin..
    Hocam teşekkür ederim. Sorunu çözdüm. strlen(metin) fonksiyonu dizideki karakter kadar satır döndürüyor for içinde. Örneğin 16 karakter var dizide.
    a
    bc
    def
    ghıi
    ....
    ....
    16 satır gidiyor. 16 satırlık karakter olmayınca da anlamsız karakterler yazdırıyor . Cevabın ,emeğin için teşekkür ederim üstat ihtiyacı olan arkadaşlar için çok faydalı bir paylaşım yapmışsınız.
  • 18-04-2014, 15:15:47
    #4
    dufyduck adlı üyeden alıntı: mesajı görüntüle
    Hocam teşekkür ederim. Sorunu çözdüm. strlen(metin) fonksiyonu dizideki karakter kadar satır döndürüyor for içinde. Örneğin 16 karakter var dizide.
    a
    bc
    def
    ghıi
    ....
    ....
    16 satır gidiyor. 16 satırlık karakter olmayınca da anlamsız karakterler yazdırıyor . Cevabın ,emeğin için teşekkür ederim üstat ihtiyacı olan arkadaşlar için çok faydalı bir paylaşım yapmışsınız.
    rica ederim, mesajda piramit demişsiniz kutu dolu oldugu için buradan yazılaşım,
    1
    121
    1331
    tarzı bir üçgen oluşturmak istiyorsanızda pascal üçgeni kodlarını inceleyin yardımı olabilir
  • 18-04-2014, 18:21:35
    #5
    ilkerxx adlı üyeden alıntı: mesajı görüntüle
    rica ederim, mesajda piramit demişsiniz kutu dolu oldugu için buradan yazılaşım,
    1
    121
    1331
    tarzı bir üçgen oluşturmak istiyorsanızda pascal üçgeni kodlarını inceleyin yardımı olabilir
    Hallettim hocam teşekkür ederim.