Anonymní profil Fenry – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Fenry – Programujte.comAnonymní profil Fenry – Programujte.com

 

Příspěvky odeslané z IP adresy 89.176.51.–

C / C++ › compilation error
23. 2. 2012   #154024

Sice jsem v programování nováček, ale zkusil bych v příkazu pro kompilaci vynechat -std=99

C / C++ › Plnění seznamu hodnotami/obj…
6. 4. 2011   #140739

To HenX : No v zadání máte uvedeno, že máte implementovat třídu Seznam, ve které bude seznam studentů uložen jako jednosměrný spojový seznam. Co na tom nechápete?

C / C++ › uložení obdélníkovýho vstupu…
6. 1. 2011   #137615

No názvy "matice" ve všech funkcích nejsou úplně dobře zvolené z hlediska didaktiky, protože každý z nich má rozsah platnosti pouze v tom bloku (funkci), kde je deklarován. Tudíž poslední funkci můžu stejně dobře napsat jako



void vypis_matici(char ** pole, int nc, int i) {
int i2 = 0;
int i3 = 0;
pole[0][0] = 'a';
for(i2 = 0; i2 < i; i2++) {
for(i3 = 0; i3 < nc; i3++) {
printf("%c", pole[i2][i3]);
}
printf("\n");
}
}

a opět to bude fungovat. Funkci se nepredava jmeno, nebo neco podobneho, ale ukazatel na tu matici.

Edit: ano, bude měnit to pole "matice"

Teď bych prozměnu chtěl o něco poprosit já tebe, učím se sám programovat v C/C++ ale chybí mi nějaké příklady, mohl by jsi mi tedy prosím do pošty hodit zadání té práce? Popřípadě i jiná pokud jich máš víc. Díky.

C / C++ › uložení obdélníkovýho vstupu…
6. 1. 2011   #137604

To Why : Jsem rád, že to pomohlo

int read_row(int *needed_cols, char ** b_row)

Hvězdičky znamenají, že druhý argument té funkce je ukazatel na ukazatel na char. Dalo by se to zapsat i takto:
int read_row(int *needed_cols, char *b_row[])
ale já raději používám tu první formu zápisu.

Ad getchar() a int:
funkce getchar vrací proměnou typu int. Přetypování na char se provede implicitně až na tomto řádku, závorky jsou nezbytné kvůli prioritě operátorů:
(*b_row)[i] = ch;

ASCII znaky se vejdou do nejnižších 7 bitů, takže při přetypování na char nedojde ke ztrátě informace

A ten poslední problém bych vyřešil následovně:

v main:
vypis_matici(matice,needed_cols,i);

a fce:


void vypis_matici(char ** matice, int nc, int i) {
int i2 = 0;
int i3 = 0;
matice[0][0] = 'a';
for(i2 = 0; i2 < i; i2++) {
for(i3 = 0; i3 < nc; i3++) {
printf("%c", matice[i2][i3]);
}
printf("\n");
}
}

C / C++ › uložení obdélníkovýho vstupu…
6. 1. 2011   #137582

To Why : Tak už to mám hotové. Je tam mnoho oprav, projdi si to řádek po řádku. Abych upozornil na nejzáludnější chyby:

řádek 13 - způsobí, že nebude možno načíst řádek delší než 3 znaky (podmínka ve funkci read_row() už v prvním volá ní po načtení čtvtého znaku způsobí ukončení funkce.

řádek 15 - má být *b_row ...

řádek 28 - má být (*b_row)[i] ...

řádek 60 - všude má být && namísto ||

k čemu je dobrý řádek 64? last_needed_cols se může zrušit a dále v souboru místo toho použít needed_cols

přikládám soubor, možná je v něm trochu rozházené odsazování, já to původně kopíroval tady ze stránek a trochu mi to blblo


Celé si to důkladně projdi

Edit: v tom přiloženém souboru na začátku main() inicializuj promennou vystup

vystup = 0;
nebo
vystup = OK;

C / C++ › uložení obdélníkovýho vstupu…
5. 1. 2011   #137578

To Why : Pracuji na tom, buď ještě večer, nebo zítra ráno to sem postnu

C / C++ › uložení obdélníkovýho vstupu…
5. 1. 2011   #137559

na řádku 54 jsi proměnou needed_cols deklaroval, ale neinicializoval. Má tedy nedefinovanou hodnotu.

C / C++ › uložení obdélníkovýho vstupu…
5. 1. 2011   #137552

Kompletně zeditováno:
Nemáš inicializovanou proměnnou needed_cols

Edit: Dále na řádku 20 má být

b_row = (char **) malloc ( sizeof ( *b_row ) * n );

C / C++ › uložení obdélníkovýho vstupu…
5. 1. 2011   #137537

To KIIV : No pokud správně koukám, tak řádky si alokuje ve funkci read_row().

Fenry
C / C++ › uložení obdélníkovýho vstupu…
5. 1. 2011   #137531

Po prvním zběžném prolítnutí vidím 2 problémy.

Na řádku 55

char matice;

by mělo spíš být
char ** matice;


poté tedy na radku 57 musí být toto:
alokuj_pole(velikost, matice);


a na řádku 46 má být toto
pole = (char**) malloc ( sizeof ( *pole ) * n );


To jsou věci, které jsem viděl na první pohled, snad to k nakopnutí bude stačit, pokud ne, tak napište.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý