Stránka 1 z 1

[C] Vykreslení trojúhelníků (školní úkol)

Odeslat příspěvekNapsal: 24. 10. 2013 12:57
od miklel
Dobrý den potřebuji pomoct s úkolem v c. Mám za úkol, aby mě program vypisoval trojúhelníky:
x
xxx

x
x x
xxxxxx .... a dál se to zvětšuje vypisuji už znaky, ale nevím si rady s odsazením zleva.

Tady dávám můj kód. Předem děkuji za pomoc.

Kód: Vybrat vše
#include <stdio.h>
#include <stdlib.h>


int main()
{
   int pocet = 11;
   int i, j, k, l = 0;

   if (pocet <= 11)
   {
      for (i = 1; i <= pocet; i++)
      {



         for (j = 0; j < i + 1; j++)
         {
            for (l = j + 2; l > j; l--)
            {
               printf(" ");
            }

            for (k = 0; k < j; k++)
            {


               printf("x");







            }


            printf("\n");


         }
      }



   }

   else
   {
      printf("Zadana hodnota je vetsi nez 11 !!");
   }

   return 0;
}

Re: Pomoc s úkolem

Odeslat příspěvekNapsal: 24. 10. 2013 13:57
od Wikan
Ještě že jsi ho napsal tak přehledně a se skvělým pojmenováním proměnných.

Re: Pomoc s úkolem

Odeslat příspěvekNapsal: 24. 10. 2013 14:44
od PiranhaGreg
Za 10 minut...

Kód: Vybrat vše
#include <stdio.h>

int main(void) {
    int vyska, pocet, i, t;
   
    printf("Zadej vysku: ");
    if (scanf("%d", &vyska) != 1 || vyska < 2 || vyska > 11) {
        printf("\nSpatny vstup");
        return 1;
    }
   
    for (i = 1, pocet = 0; i <= vyska; i++) {
        printf("\n");
        pocet += i;
       
        for (t = 1; t <= vyska * 2; t++)
            vyska - i >= t || vyska + i < t ? printf(" ") : printf("X");
    }
   
    return 0;
}

Re: Pomoc s úkolem

Odeslat příspěvekNapsal: 24. 10. 2013 15:07
od miklel
Omlouvám se neměl jsem u sebe zadání a zadání zní takto: Program, který pro zadané číslo n postupně vytiskne na obrazovku trojúhelníky, které budou mít i+1 řádků a 2*i+1 sloupců (i=1,..,n). Maximální hodnota n bude 11 (součástí programu musí být i test přístupnosti n).

Obrázek

Re: [C] Vykreslení trojúhelníků (školní úkol)

Odeslat příspěvekNapsal: 24. 10. 2013 17:13
od miklel
Už mám vyřešené odsazení a vytvořené trojúhelníky, ale pořád nemůžu vyřešit mezery uvnitř trojúhelníku.

Kód: Vybrat vše
#include <stdio.h>
#include <stdlib.h>


int main()
{
   int pocet = 11;
   int i, j, k, l = 0;
   

   if (pocet <= 11)
   {
      for (i = 1; i <= pocet; i++)
      {



         for (j = 0; j < i + 1; j++)
         {
            for (l =  i+1; l > j; l--)
            
            {
               printf(" ");
               
               
            }
            

            for (k = 0; k < 2*j+1; k++)
            {
               

               printf("x");







            }



            printf("\n");


         }
      }



   }

   else
   {
      printf("Zadana hodnota je vetsi nez 11 !!");
   }

   return 0;
}

Re: [C] Vykreslení trojúhelníků (školní úkol)

Odeslat příspěvekNapsal: 24. 10. 2013 18:01
od a2596399
Tady to máš:
Kód: Vybrat vše
#include <stdio.h>
#include <stdlib.h>

void triangle(int rows) {
  int row, i;
  for (row = 0; row < rows; row++) {

    for (i = 0; i < (rows - row); i++)
      printf(" ");

    printf("X");

     if (row > 0) {
      for (i = 0; i < (row*2 - 1); i++) {
        if (row == rows - 1)
          printf("X");
        else
          printf(" ");
      }

      printf("X");
    }

    printf("\n");
  }
}

int main(int argc, char** argv)
{
  if (argc != 2) {
    printf("USAGE: ./triangles N\n");
    return 1;
  }

  int n = atoi(argv[1]);

  int i;
  for (i = 2; i <= n; i++) {
    triangle(i);
    printf("\n");
  }

  return 0;
}


Obrázek

Re: [C] Vykreslení trojúhelníků (školní úkol)

Odeslat příspěvekNapsal: 24. 10. 2013 18:22
od miklel
Díky, ale nějak mi to nejde vypisuje mi to hlášku hned ze začátku USAGE: ./triangles N\n kliknu a konec.

Re: [C] Vykreslení trojúhelníků (školní úkol)

Odeslat příspěvekNapsal: 24. 10. 2013 18:29
od a2596399
Musíš tomu dát jako parametr n... Na screenu jsem to spouštěl jako ./triangles 5...

Nebo se můžeš na n zeptat a pak ho načíst pomocí scanf:
Kód: Vybrat vše
#include <stdio.h>
#include <stdlib.h>

void triangle(int rows) {
  int row, i;
  for (row = 0; row < rows; row++) {

    for (i = 0; i < (rows - row); i++)
      printf(" ");

    printf("X");

     if (row > 0) {
      for (i = 0; i < (row*2 - 1); i++) {
        if (row == rows - 1)
          printf("X");
        else
          printf(" ");
      }

      printf("X");
    }

    printf("\n");
  }
}

int main(int argc, char** argv)
{
  int n;
  printf("Enter n: ");
  scanf("%d", &n);
  printf("\n");

  int i;
  for (i = 2; i <= n; i++) {
    triangle(i);
    printf("\n");
  }

  return 0;
}


PS: Jo a je to udělaný tak, že ti to pro třeba n = 5 vypíše 4 trojúhelníky - přeskakuji ten první jednopísmenkovej: for (i = 2; i <= n; i++) a ten poslední má 5 řádků.
Pokud tu smyčku předěláš na: for (i = 2; i <= n + 1; i++), tak ti to vypíše trojúhelníků 5, ale ten poslední bude mít 6 řádků. Takže si to uprav tak, jak to po tobě chtějí.

Re: [C] Vykreslení trojúhelníků (školní úkol)

Odeslat příspěvekNapsal: 24. 10. 2013 18:36
od miklel
T*vole já jsem vůl.. jo už vím díky moc strašně si mi pomohl :)

-- 24. 10. 2013 18:51 --

Jo to sem si hned předělal :)

Re: [C] Vykreslení trojúhelníků (školní úkol)

Odeslat příspěvekNapsal: 26. 10. 2013 11:30
od geal
miklel píše:Díky, ale nějak mi to nejde vypisuje mi to hlášku hned ze začátku USAGE: ./triangles N\n kliknu a konec.


Nezlob se, ale tohle je jasný symptom neschopnosti pochopit čtyři řádky kódu pracujícího s argc a argv, nemluvě o nechápání konvencí pro command line programy, co by měly být schopné vypsat vlastní nápovědu. (A to ještě to "USAGE" tam stojí velkými písmeny!). Doufej, že na tebe učitel(ka) nepřijde. ;-]