Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem C - funkce pro výpis pole

Zdravím.
Pokusím se popsat o co se snažím:
Například mám jednorozměrné pole s názvem obsah, které obsahuje nějaký řetězec. Pak mám pole volba, do kterého načítám řetězec z klávesnice. Načtu tedy např. slovo "obsah". Teď budu chtít po funkci, aby použila to slovo "obsah" a vypsala řetězec, který je uložen v poli obsah (tedy to, co načtu z klávesnice bude název pole, které se má vypsat). Pokud bych měl třeba ještě pole s názvem jmeno, které obsahuje řetězec "Petr" a zadal bych z klávesnice "jmeno", funkce by měla opět vypsat to pole, které jsem zadal a výstup by tedy měl být "Petr".
Doposud jsem to měl vyřešeno porovnáváním řetězců (např. je-li v poli volba řetězec "obsah", vypiš pole obsah). To ovšem znamená nadefinovat akci pro každé pole (já jich mám 6). Proto bych to chtěl vyřešit tak, jak jsem popisoval výše, tj. funkce si ten název pole, které má vypsat, vezme např. z pole volba.
Díky za případnou radu.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
t.j. principialne to robis blbo ze mas kazde pole osobitne s nejakymi nazvami, mas mat pole polí, na…
MM.. 05.12.2011 16:42
MM..
Díky za radu. Pole struktur je pro mě zatím velká neznámá, ale alespoň vím, pod čím hledat. poslední
Niko Bellic 05.12.2011 17:07
Niko Bellic

t.j. principialne to robis blbo ze mas kazde pole osobitne s nejakymi nazvami, mas mat pole polí, napr.

typedef struct _polestruc {
const char *nazov;
int data_pola[10];
} polestruc;

polestruc mojepolia[] =
{
  { "obsah", {10,20,30,40,50,60,70,80,90,100} },
  { "inepole", {1,2,3,4,5,6,7,8,9,10} }
}

int* dajdata(char *zadanyretazec)
{
for(int i=0; i<sizeof(mojepolia)/sizeof(mojepolia[0]); i++)
  if(strcmp(zadanyretazec, mojepolia[i].nazov) == 0)
    return(mojepolia[i].data_pola);  // pole najdene
return NULL;  // pole nenajdene
}

ak chces mat polia dynamicke tak si treba dat do struktury aj pocet dat a nie int pole ale pointer na int, apod, toto bol len jednoduchy priklad k tomu co si sa pytal a nie dokonaly program :)

Zpět do poradny Odpovědět na původní otázku Nahoru