IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
alena.s7
Člen
Avatar
alena.s7:12.12.2014 12:27

Ahoj, mám vykeslit pravoúhlý trojúhelník z*.
má vypadat nějak takto:
*
**




Poté, co zadám velikost základny, už si nevím rady..

 
Odpovědět
12.12.2014 12:27
Avatar
Odpovídá na alena.s7
Luboš Běhounek Satik:12.12.2014 12:33

Ahoj, budes potrebovat cyklus pres vsechny radky a v kazdem pruchodu dalsi cyklus, ktery vypise hvezdicky podle toho, na jakem jsi radku a znak konce radku.

Nahoru Odpovědět
12.12.2014 12:33
https://www.facebook.com/peasantsandcastles/
Avatar
alena.s7
Člen
Avatar
alena.s7:12.12.2014 12:33

a mohl bys mi to sem prosim vypsat?

 
Nahoru Odpovědět
12.12.2014 12:33
Avatar
Odpovídá na alena.s7
Luboš Běhounek Satik:12.12.2014 12:44

Co máš zatím hotové? :)

Nahoru Odpovědět
12.12.2014 12:44
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na alena.s7
Libor Šimo (libcosenior):12.12.2014 12:47
#include <stdio.h>
#include <stdlib.h>

int main(void)
 {
    int i, j;

    for (i = 0; i < 5; i++) {
        for (j = 0; j < 5; j++)
        j < i || j == i ? putchar('*') : putchar(' ');
        putchar('\n');
    }

    return 0;
 }
Nahoru Odpovědět
12.12.2014 12:47
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
alena.s7
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
alena.s7:12.12.2014 12:54

jsi úžasný.. měla jsem polovinu, protože nemám v progamování žádné zkušenosti, a přesto to musím udělat abych prošla zápočtem na VŠ, takže děkuji :)

 
Nahoru Odpovědět
12.12.2014 12:54
Avatar
Odpovídá na Libor Šimo (libcosenior)
Luboš Běhounek Satik:12.12.2014 12:55

Proč tak složitě? :)

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

int main(void)
{
    int i, j;

    for (i = 0; i < 5; i++)
    {
        for (j = 0; j <= i; j++)
            putchar('*');
        putchar('\n');
    }

    return 0;
}
Nahoru Odpovědět
12.12.2014 12:55
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Libor Šimo (libcosenior):12.12.2014 12:59

Jasne, veľmi som o tom nepremýšľal. :-)

Nahoru Odpovědět
12.12.2014 12:59
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
alena.s7
Člen
Avatar
 
Nahoru Odpovědět
12.12.2014 13:06
Avatar
Odpovídá na Luboš Běhounek Satik
Libor Šimo (libcosenior):12.12.2014 13:55

Ako by si zjednodušil toto?

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

int main(void)
{
    int i, j, k, vel = 5;

    for ( i = 0; i < vel; i++ ) {
        for (j = 0; j < vel * 2; j++)
            j < vel - i || j > vel + i ? putchar(' ') : putchar('*');
    putchar('\n');
  }
  return 0;
}
Editováno 12.12.2014 13:57
Nahoru Odpovědět
12.12.2014 13:55
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):12.12.2014 13:58

Hergot, nedá sa mi tam vložiť obrázok. Vykreslí to rovnostranný trojuholnik.

Nahoru Odpovědět
12.12.2014 13:58
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Luboš Běhounek Satik:12.12.2014 14:29
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int vel = 5;

  for (int i = 0; i < vel; i++ ) {
    for (int j = 0; j < vel * 2; j++)
      putchar(abs(vel-j)<=i?'*':' ');
    putchar('\n');
  }
  return 0;
}
Nahoru Odpovědět
12.12.2014 14:29
https://www.facebook.com/peasantsandcastles/
Avatar
coells
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
coells:12.12.2014 19:00
#include <stdio.h>

int main(int argc, const char * argv[]) {
    const char *stars = "*********";
    const int n = 5;

    for (int i = 0; i < n; i++)
        printf("%*.*s\n", n + i + 1, 2 * i + 1, stars);

    return 0;
}
 
Nahoru Odpovědět
12.12.2014 19:00
Avatar
Odpovídá na coells
Libor Šimo (libcosenior):13.12.2014 8:37

Satik-ovmu kódu rozumiem, ale tvojmu nie. Asi tam používaš operátor čiarka a vykresluješ to ako reťazec, len nemám predstavu ako to celé funguje.
Mohol by mi to niekto vysvetliť?

Nahoru Odpovědět
13.12.2014 8:37
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na coells
Libor Šimo (libcosenior):13.12.2014 8:45

Nechal som si vypísať hodnoty,

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

int main(void)
{
    int i;
    const char *stars = "*********";
    const int n = 5;

    for (i = 0; i < n; i++) {
        printf("%*.*s\n", n + i + 1, 2 * i + 1, stars);
        printf("%d, %d, %d\n", n + i + 1, 2 * i + 1, strlen(stars));
    }

    return 0;
}

ale ani tak nie som múdrejší...

Nahoru Odpovědět
13.12.2014 8:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
hanpari
Člen
Avatar
Odpovídá na coells
hanpari:13.12.2014 8:54

Nemá to řešení vadu na kráse? Není omezeno počtem hvězdiček?

 
Nahoru Odpovědět
13.12.2014 8:54
Avatar
Odpovídá na hanpari
Libor Šimo (libcosenior):13.12.2014 9:21

To má, ale aj tak nechápem ako to funguje.

Nahoru Odpovědět
13.12.2014 9:21
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
coells
Tvůrce
Avatar
Odpovídá na hanpari
coells:13.12.2014 11:28

Každé řešení je něčím omezené, pouze to nemusí být na první pohled vidět - rozsah typu int, velikost obrazovky, atd. :-P Pokud znáš omezení programu a jsi schopen je expliticně definovat (což dělá 99% programů, kde omezení hrají důležitou roli), není to žádný problém.

Hvězdičky považuješ za vadu na kráse proto, že sis to přečetl v nějaké knize a papouškuješ to. Jenže ty knihy by moje řešení považovaly za méně elegantní jenom proto, že všechny hvězdičky musíš ručně vypsat, nikoliv proto, že by v něčem omezovaly. A protože se tě ty knihy snaží naučit, jak se stát programátorem, je nutné nejprve potlačit tvořivost :-P

Dám ti alternativní pohled na krásu:

Libcův text "for (j = 0; j < vel * 2; j++) ?:" (tj. explicitní for-cyklus a podmínku) jsem nahradil textem "*********" :-)

 
Nahoru Odpovědět
13.12.2014 11:28
Avatar
coells
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
coells:13.12.2014 11:31
printf("%*.*s", X, Y, S);

Vytiskne Y znaků z řetězce S z požadavkem na doplnění mezerou zleva na X znaků.
http://www.cplusplus.com/…tdio/printf/

Editováno 13.12.2014 11:32
 
Nahoru Odpovědět
13.12.2014 11:31
Avatar
hanpari
Člen
Avatar
Odpovídá na coells
hanpari:13.12.2014 13:55

Uf, žádné knihy. Jen mne napadlo něco podobného co tebe, ale nechal jsem toho, když jsem si uvědomil, že by mne omezoval počet hvězdiček. No a pak jsem viděl tvoje řešení, tak jsem to zmínil, nic světoborného.

Mimochodem, když už jsme v tom, v jakých knihách se doporučuje kolik hvězdiček použít? Já bych to nepitval, ale když už sis tak naběhl... :)

 
Nahoru Odpovědět
13.12.2014 13:55
Avatar
Odpovídá na coells
Libor Šimo (libcosenior):13.12.2014 15:43

Ďakujem, nevedel som o tejto možnosti, je to zaujímavé.

Nahoru Odpovědět
13.12.2014 15:43
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
coells
Tvůrce
Avatar
Odpovídá na hanpari
coells:13.12.2014 19:54

Kolik knížek znáš, které vyučují programovací jazyk jako výrazový prostředek, který se ti podřídí, aby mohl snáze dosáhnout cíle? A kolik knížek znáš, které učí jazyk jako základní esenci, které se musíš podřídit a podstrkávají ti umělé příklady, aby ses ji naučil? Můžeš to pitvat, jak chceš, ale fakta to nezmění.

 
Nahoru Odpovědět
13.12.2014 19:54
Avatar
hanpari
Člen
Avatar
Odpovídá na coells
hanpari:13.12.2014 20:18

Abych se přiznal, z té první kategorie neznám asi ani jednu. Máš nějaký příklad, který bys doporučil, pokud tedy nějaký takový existuje?
Všechno vysvětlování je přece založené na příkladech. Když si vzpomeneš na hodiny slohu, určitě se ti vybaví od abstraktního ke konkrétnímu a zase zpět. A to konkrétní jsou právě příklady. Bez příkladů bude všechno příliš esoterické a neuchopitelné.

 
Nahoru Odpovědět
13.12.2014 20:18
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 23 zpráv z 23.