[ optimus.prime @ 10.05.2008. 21:56 ] @
Neka program od korisnika učita broj i na izlazu odštampa trougao, bez koristenja printf naredbe. Primjer trougla za
učitani broj 5 je:

A
ABA
ABCBA
ABCDCBA
ABCDEDCBA

.

Unaprijed zahvaljujem na rjesavanju ovog problema...

P.S.: Znam rijesiti kada je rijec o ispisu jednog znaka,npr.:

*
***
*****
******* // treba da ispise trougao isto kao i sa slovima,ali mi ovdje uvjekporavna sa jedne strane//

to sam rijesio na ovaj nacin; (npr. za n=5)
Code:

#include<stdio.h>
int main()
{
    int n,i,j;
    n=5;
    for(i=1;i<=n;i++){
        for(j=1;j<=n-i;j++){
            printf(" ");
        }
        for(j=1;j<=i;j++){
        printf("*");}
        for(j=1;j<i;j++){
        printf("*");}
        printf("\n");
}}



[ pre ] [ /pre ] su tagovi za fixed font
[ code ] [ /code ] su tagovi za kod



[Ovu poruku je menjao X Files dana 10.05.2008. u 23:08 GMT+1]
[ R A V E N @ 13.05.2008. 10:34 ] @
Oooo,pa kolega!

Ispis ovih uzoraka,koji mogu imati najrazličitije forme,mi je uvijek bio agonija.

Čudno mi je sa tim zadacima da su opet riješeni korištenjem funkcije
printf
.

U gornjem zadatku varijablu
n
preimenuj u npr.
broj_redova
,a i ostale preimenuj tako da je razumljivije šta one zapravo predstavljaju,ovako je program samo više kriptičan.

Evo ti kod za unos broja redova od strane korisnika,pošto pretpostavljam da sada kampanjski učiš pred ispit:

Code:
printf("Unijeti broj redova:");
scanf("%d",&broj_redova);


Varijablu
broj_redova
setuj na vrijednost
0
,tako da uvijek imaš pravi broj redova realiziran.Ovako ti nedostaje jedan.

Evo ti rješenje gornjeg zadatka,slučajno baš ovaj primjer imam riješen.Nadam se da ćeš shvatiti:

Code:

#include <stdio.h>

int i,j,red;

main()
{
      printf("Unijeti broj redova:");
      scanf("%d",&red);
      
      for(i=0;i<red;i++)/*Ovo definise broj redova.*/
          {
          for(j=0;j<red-i;j++)/*Ovo definise broj praznih mjesta.Kako i raste,tako se smanjuje broj praznih mjesta.*/
              putchar(' ');
          for(j=0;j<=i;j++)/*Ovo definise znakove prvog dijela piramide.Kako i raste,moze rasti i j i time se povecava i vrijednost koja se pokazuje sa %c.*/
              printf("%c",'A'+j);        
              for(j=1;j<=i;j++)/*Ovo definise znakove drugog dijela piramide.Kako i raste,moze rasti i j i time se smanjuje i vrijednost koja se dodaje na A tako da rezultat dat sa %c ponovo tezi ka A.*/
              printf("%c",'A'+i-j);
              putchar('\n');
          }

     printf("\n");
     system("PAUSE");
}


Ako malo modifikuješ drugu petlju u programu,dobivaš lakše ideju šta ona radi:



[Ovu poruku je menjao R A V E N dana 13.05.2008. u 13:56 GMT+1]
[ maricn @ 15.05.2008. 16:14 ] @
samo, posto ne moze da se koristi printf, mozes da pakujes u string (sa putchar) i stampaj sa puts na kraju prvog ciklusa...
...ili neka druga ideja ???