Diskuze: Pravoúhlý trojúhelník
Člen
Zobrazeno 23 zpráv z 23.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
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.
#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;
}
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
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;
}
Jasne, veľmi som o tom nepremýšľal.
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;
}
Hergot, nedá sa mi tam vložiť obrázok. Vykreslí to rovnostranný trojuholnik.
#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;
}
#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;
}
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ť?
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ší...
Nemá to řešení vadu na kráse? Není omezeno počtem hvězdiček?
To má, ale aj tak nechápem ako to funguje.
Každé řešení je něčím omezené, pouze to nemusí být na první pohled vidět - rozsah typu int, velikost obrazovky, atd. 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
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 "*********"
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/
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...
Ďakujem, nevedel som o tejto možnosti, je to zaujímavé.
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í.
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é.
Zobrazeno 23 zpráv z 23.