Triedenie udajov v C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Triedenie udajov v C – C / C++ – Fórum – Programujte.comTriedenie udajov v C – C / C++ – Fórum – Programujte.com

 

presto0
Duch
11. 11. 2010   #1
-
0
-

Dobry den,

Prosim Vas potreboval by som poradit ako zrealizovat system na triedenie udajov, ktory musi obsahovat:
1. Načítanie údajov zo súboru do dynamického poľa v cykle
2. Možnosť zmeny existujúcej položky poľa v tvare štruktúry resp. jej členov
3. Možnosť triedenia štruktúr podľa konkrétnej položky
4. Možnosť vyhľadávania podľa konkrétnej položky
5. Uloženie zmenených dát do súboru

Nacitat udaje do dnamickeho pola zo suboru v cykle viem, taksito ulozit zmenene data do suboru, moznosti 2,3,4 nie su mi az tak jasne. Bol by niekto ochotny mi pomoct? Dakujem.
Zatial mam:



#include <stdio.h>
#include <stdlib.h>

int main()
{

int n, i;
FILE *f1,*f2;
float *pole_hodnot;

pole_hodnot = (float*)malloc(n * sizeof(float));
if(pole_hodnot == NULL)
{
printf("Nedostatok pamatoveho priestoru.\n");
return -1;
}
if ((f1 = fopen("file1.txt", "r"))!= NULL
{

for(i = 0; i < n; i++)
{
fscanf(f1, "%f", &pole_hodnot[i]);
}


return 0;
}


PS: mam predstavu co su to struktury typedef struct {polozky}; , ale neviem ako to presne realizovat a bol by som rad, ak by mi to niekto skuseny predviedol priamo na tomto priklade.

Este raz dakujem

Nahlásit jako SPAM
IP: 178.41.41.–
sputnikone+1
Věrný člen
11. 11. 2010   #2
-
0
-

Úvodem bys třeba mohl objasnit, co by měla obsahovat ta struktura.

Nahlásit jako SPAM
IP: 147.251.201.–
presto0
Duch
11. 11. 2010   #3
-
0
-

To je jedno, moze tam byt hocico lubovolne. Co kolvek uznas za vhodne... Potrebujem to len ako priklad, aby som si to potom mohol rozviest do zlozitejsich veci a hlavne pohopit to.

EDIT:
Ale asi bude najlepsi priklad na zretazenom zozname...

Nahlásit jako SPAM
IP: 178.41.41.–
sputnikone+1
Věrný člen
11. 11. 2010   #4
-
0
-

To presto : OK. Dejme tomu takhle:



typedef struct priklad{
int cislo;
char znak;
} Spriklad;

Vytvoří se datový typ. který je strukturou se dvěma položkami: číslem a slovem o 9 znacích. Použití:


Spriklad promenna;
promenna.cislo = 10;
promenna.znak = 'a';


EDIT: zřetězený seznam nebude pasovat na pole

Nahlásit jako SPAM
IP: 147.251.201.–
presto0
Duch
11. 11. 2010   #5
-
0
-

Ok, takze napriklad si vytvorim strukturu s polozkami, ktore budu dynamicke polia do ktorych nacitam udaje zo suboru .txt. Otazka, ale je ako uskutocnit zmenu "existujúcej položky poľa v tvare štruktúry resp. jej členov" + "Možnosť triedenia štruktúr podľa konkrétnej položky" a "Možnosť vyhľadávania podľa konkrétnej položky"? Z toho som uplne zmeneteny....

EDIT:
Potrebujem jednoducho nejaky odrazovy bod, najlepsie cely priklad nejakeho navrhnuteho vlastneho systemu na triedenie udajov, ktory musi obsahovat to co je popisane v hornych bodoch. Takym stylom ako to je napr v Ucebnici jazyka C od Herouta, no tam som presiel celu kapitolu, ale stale neviem ako konkretne zrealizovat tie body, ktore som popisoval vyssie...

Nahlásit jako SPAM
IP: 178.41.41.–
presto0
Duch
13. 11. 2010   #6
-
0
-

Dik, uz som pokrocil, ale este by som sa chcel ale spytat jednu vec a to:

int main()

{
int i,n;
int a[10];
for(i=1;i <= n; i++) {
printf("prvok a[%d]:",i);
scanf("%d",&a[i]);
}

for(i=1;i<=n;i++)
printf("Vypis:%d\n",a[i]);

return 0;
}


mam hore uvedene staticke pole, do ktoreho nacitavam 11 cisel. Ak ich nacitavam po rade cize 1,2,3,4,5,6,7,8,9,10,11, tak sa aj v poriadku vypisu ako maju, ale akonahle ich zadavam striedavo cize 5,4,5,7,8,9,1,2,3,6, tak pri dajme tomu 9-tom prvku mi to skoci akoby som zadaval znovu od 2-heho prvku a potom to pokracuje do nekonecna, proste stale mozem zadavat udaje a nic sa nevypise, ako je to mozne? Dik za odpoved

Nahlásit jako SPAM
IP: 178.41.41.–
sputnikone+1
Věrný člen
13. 11. 2010   #7
-
0
-

To presto : Chyby:



int i,n;
int a[10];
for(i=1;i <= n; i++)

No jo, ale co je v proměnné n? A pole v C jsou indexována od 0.

Nahlásit jako SPAM
IP: 94.113.188.–
presto0
Duch
13. 11. 2010   #8
-
0
-

Ano, uz to mam a konecne to funguje ako ma :)



int main()
{
int i;
int a[10];
for(i=0;i < 10; i++) {
printf("prvok a[%d]:",i);
scanf("%d",&a[i]);
}

for(i=0;i < 10;i++)
printf("Vypis:%d\n",a[i]);

return 0;
}


Velmi pekne dakujem za pomoc :)

Nahlásit jako SPAM
IP: 178.41.41.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 110 hostů

Podobná vlákna

Triedenie — založil Thomash

Triedenie MergeSort — založil newo

Pascal triedenie MAXSORT — založil pietro62

Triedenie textoveho suboru — založil Wulp

Moderátoři diskuze

 

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