Nepřepisování dat ve struktuře – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Nepřepisování dat ve struktuře – C / C++ – Fórum – Programujte.comNepřepisování dat ve struktuře – C / C++ – Fórum – Programujte.com

 

theM110
Duch
27. 12. 2013   #1
-
0
-

Problém: při výpisu dat ze struktury se zobrazují pouze naposledy zadaná data
Proč to dělá ? Tipuji, že ukazatel je stále na jednom místě.
Kód, který sem přidávám je tak trochu směs googlení a mé vlastní tvořivosti. Takže bych rád uvítal i kritiku za chyby. Díky

Struktura do které zapisuji vypadá takto:
typedef struct pocitac{
  int hodnota;
  char jmeno[30];
  struct pocitac *p_dalsi;
}POCITAC;

Funkce, která by měla zajišťovat přidání dat do struktury:

POCITAC *pridej(POCITAC **n, int hodnota, char nazev[30])
{
  POCITAC* prvni = NULL;

  prvni = malloc(sizeof(POCITAC));

  POCITAC* dalsi = malloc(sizeof(POCITAC));
  dalsi->hodnota = hodnota;
  strcpy(dalsi->jmeno,nazev);
  dalsi->p_dalsi = NULL;

  if(prvni == NULL){
    prvni = dalsi;
  }
  POCITAC* p_novy = prvni;
    while(p_novy->p_dalsi != NULL) {
      p_novy = p_novy->p_dalsi;
    }
  p_novy->p_dalsi = dalsi;
  p_novy = prvni;
  return p_novy;
}

 

int main()
{
  int pocitej = 0;
  int i = 0;
  POCITAC *p_ukaz = NULL;
  p_ukaz = malloc(sizeof(POCITAC));

while(strcmp(p_ukaz->jmeno, "konec") != 0) {
  scanf("%d",&p_ukaz->hodnota);
  scanf("%s", &(p_ukaz->jmeno));

  pridej(&p_ukaz,p_ukaz->hodnota,p_ukaz->jmeno);
  pocitej++;
}
for(i=0;i<pocitej;i++){
  list_print(p_ukaz);
}
  return 0;
}

Děkuju moc za pomoc, tak trochu se v tom ztrácím.

Nahlásit jako SPAM
IP: 79.98.158.–
KIIV
~ Moderátor
+43
God of flame
27. 12. 2013   #2
-
0
-

zaprve tu mame formatovaci tlacitko "kod"

zadruhe to vypada jako extremni paskvil (ted by se mozna hodily komentare "co myslis ze to bude delat" - tj. ten styl komentaru ktery sou normalne zbytecny... ale tady by to aspon naznacilo jak moc blbe mas kod)

a za treti, neni dobre nacitat si data do prvniho prvku...

list_print taky nebude nejspis fungovat jak myslis...

Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
theM110
Duch
27. 12. 2013   #3
-
0
-

#2 KIIV
Dobrá.
Tak jak by to načítání mělo vypadat ?

Nahlásit jako SPAM
IP: 79.98.158.–
KIIV
~ Moderátor
+43
God of flame
27. 12. 2013   #4
-
0
-

ja nevim.. treba:

  char jmeno[30];
  int hodnota;

  scanf("%d",&hodnota);
  scanf("%s", &jmeno);

  pridej(&p_ukaz, hodnota, jmeno);

ale je pravdepodobne, ze to je jen jedna z mnoha chyb

Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
theM11
~ Anonymní uživatel
3 příspěvky
27. 12. 2013   #5
-
0
-

#4 KIIV
Jde mi spíš o to, jak by se měly přidávat prvky té struktury

Nahlásit jako SPAM
IP: 79.98.158.–
KIIV
~ Moderátor
+43
God of flame
27. 12. 2013   #6
-
0
-

jak.. zkontrolujes, jestli neni n == NULL, pokud je, tak vyrobis novej prvek a priradis do nej...

jinak cyklem kontrolujes  p_dalsi != NULL a posouvas se v tom retezu (samozrejme nesmis menit n ale mit ten prvek nekde jinde)

a pak vytvoris novy prvek na konci (prepises posledni p_dalsi co se v tom cyklu rovnal NULL)

Nahlásit jako SPAM
IP: 94.113.93.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 34 hostů

Podobná vlákna

Retazec v strukture — založil michal

Ukazatel ve strukture — založil Hlavinka

Soubor ve struktuře — založil Jan

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ý