Průtok dat polem – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Průtok dat polem – C / C++ – Fórum – Programujte.comPrůtok dat polem – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Ivo
~ Anonymní uživatel
93 příspěvků
15. 4. 2013   #1
-
0
-

Zdravím

Mám pole char[50] a potřeboval bych do něj ukládat hodnoty, ale tím způsobem že po naplění pole by se poslední hodnota vyšoupla ven a všechny by se posunuly a pole by se tak naplňovalo pořád dokola dále... mohl by mi někdo poradt ( nejlépe přímo příkladem) jak na to?

Děkuji moc!

Nahlásit jako SPAM
IP: 158.196.86.–
Reklama
Reklama
vitamin+8
Grafoman
15. 4. 2013   #2
-
0
-
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Ivo
~ Anonymní uživatel
93 příspěvků
15. 4. 2013   #3
-
0
-

Děkuji ale to neni presne to co potrebuji... potrebuji aby se mi tam ty data postupne ukladaly od 0 až po konec a pak se ty data vyhodily pryč a uložily se tam nové zase od nuly...

Nahlásit jako SPAM
IP: 158.196.86.–
hlucheucho+10
Posthunter
15. 4. 2013   #4
-
+1
-
Zajímavé

posouvání dat tak, aby nejstarší byla vždy s indexem 0 bude časově náročné. Kruhový buffer bude rychlejší. Stačí si pamatovat index nebo pointer nejstaršího prvku.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
ingiraxo+15
Grafoman
15. 4. 2013   #5
-
0
-

prvky budeš přidávat vždy na index 0 a před jeho přidáním si jen posuneš všechny prvky o 1 index

pro lepší efektivitu ty prvky můžeš posouvat až když pole bude plný a mezitím je přidávat normálně přes indexy 

#define N 50

static char arr[N];
static int count = 0;

void add(char c)
{
    if (count < N)
    {
        *(arr + count) = c;
        ++count;
    }
    else
    {
        for (int i = N - 2; i >= 0; --i)
        {
            *(arr + i + 1) = *(arr + i);
        }
        *arr = c;
    }
}
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
KIIV+42
God of flame
15. 4. 2013   #6
-
0
-

mozna chce jen FIFO

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
hlucheucho+10
Posthunter
15. 4. 2013   #7
-
0
-

pro posouvání prvků v poli může použít memmove, funkce posune celé pole a současně "ztratí" nejstarší prvek.  Pokud chce implementovat frontu, zbytečné plýtvání strojovým časem. Na jednočipu se takový přístup rychle vymstí.

hu

Nahlásit jako SPAM
IP: 188.95.60.–
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, 94 hostů

Podobná vlákna

Bool s 2D Polem — založil Mutagen

Práce s polem — založil Serath

Problém s polem — založil Axik

Problém s polem — založil milanbartax

Problém s polem — založil renet

Moderátoři diskuze

 

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