Diskuze: Pravoúhlý trojúhelník
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 23 zpráv z 23.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
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.