Diskuze: Výpis prvků pole
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= 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.
no asi se to samo nabizi ... printf("%d", pole[i]) ... pokud chces, co cislo
to vlastni radku udelas printf("%d\n", pole[i]) .. (\n to je newline)
pokud nevis jak se printf pouziva (coz nerikam, jen tu vnimam jistou moznost)
tak je to funkce berouci jeden nebo vice parametru, prvnim z nich musi byt za
vsech okolnosti string ... tzv. ridici string (jestli chces) ... v nem muze byt
text a specialni formulky, ktere se budou nahrazovat temi dalsimi parametry, je
to asi takhle %d integer %f float %lf long float %c character %s string a mnoho
dalsich ... celkove - umi to vsechny datovy typy cecka, umi to dokonce jeste
mnohem vic, zarovnavani cisel na pocet cifer atd. moc moc veci... doporucuju
prolustrovat zdejsi archiv, urcite najdes neco co te postrci dal
doufam, ze moje rada pomuze
Ten výpis budeš muset udělat přímo ve funkci, protože tam to pole máš lokální. Pokud to má vypsat pouze u poslední možnosti, tak můžeš přidat parametr:
int insertionsort(int n, int vypis)
V programu by ses po seřazení ptala if (vypis)
a měla bys tam
ty dva cykly, co máš nahoře.. Akorát bych tam nepsal čísla napevno, ale
využil proměnnou n:
if (vypis && n >= 20)
{
for (i = 0; i < 20; i++) {
printf("%i ", pole[i]);
}
for (i = n - 11; i < n; i++) {
printf("%i ", pole[i]);
}
}
Jak vidíš, je třeba dávat pozor, abys nečetla mimo pole, kdyby náhodou bylo n menší než dvacet.. Dalo by se to vyřešit také tak, že bys použila další proměnnou, která by byla 20 pro n >= 20 a n pro n < 20.. Nebo můžeš přidat další argumenty a pak při volání toho sortu přímo specifikovat, kolik chceš vypsat ze začátku a kolik z konce.
Pak bys tu fci volala jako:
insertionsort(2000, 0); // nic se nevypise
insertionsort(5000, 1); // probehne vypis
Zobrazeno 5 zpráv z 5.