| | |
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Autor | Správa |
---|
Registrovaný: 02.05.14 Prihlásený: 18.05.15 Príspevky: 15 Témy: 8 |
Zadanie: Kód: Uvažujte binárny vyhľadávací strom. Na vstupe je daných niekoľko čísel, ktoré postupne vkladáte do tohto stromu. Pre každé číslo zistite, ako hlboko je v strome uložené. Ak sa číslo v strome nenachádza, tak ho najprv pridajte do stromu.
Špecifikácia vstupu: Na vstupe je niekoľko čísel, ktoré postupne vkladáte do stromu. Čísla sú oddelené medzerou alebo novým riadkom.
Špecifikácia výstupu: Pre každé číslo na vstupe vypíšte jedno číslo -- ako hlboko je dané číslo uložené v strome. Ukážka vstupu: Kód: 5 3 2 1 3 Výstup pre ukážkový vstup: Kód: 0 1 2 3 1 Dobrý deň, Vážený dámy a páni, rád by som Vás oslovil ohladne jedného problému s týmto programom. Funguje takmer všetko, ale je tam taký problém,že strom ide iba do jednej strany, ktorá závisí od vstupu, podla toho ci dam vacsie cislo ako to prve alebo to mensie a takto to ide aj s ostatnými číslami v strome. Kód: #include <stdio.h> #include<stdlib.h>
typedef struct strom{ int hodnota; int hlbka; struct strom *vacsi; struct strom *mensi; }strom;
int main() { int i,p_hlbka=1; strom *prvy, *pom; prvy = (strom*)malloc(sizeof(strom)); pom = prvy; prvy->hlbka=0; prvy->vacsi=NULL; prvy->mensi=NULL; scanf("%d",&prvy->hodnota); printf("%d\n",prvy->hlbka); while((scanf("%d",&i)) == 1) { p_hlbka = 1; pom=prvy; while(pom->vacsi != NULL || pom->mensi != NULL) { if(i==pom->hodnota) break; else if(i<pom->hodnota) pom=pom->mensi; else if(i>pom->hodnota) pom=pom->vacsi; p_hlbka++; } if(i<pom->hodnota) { pom->mensi = (strom*)malloc(sizeof(strom)); pom = pom->mensi; pom->hodnota = i; pom->hlbka = p_hlbka; pom->vacsi = NULL; pom->mensi = NULL; } if(i>pom->hodnota) { pom->vacsi = (strom*)malloc(sizeof(strom)); pom = pom->vacsi; pom->hodnota = i; pom->hlbka = p_hlbka; pom->vacsi = NULL; pom->mensi = NULL; } printf("%d\n",pom->hlbka); } return 0; }
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 28.10.2014 18:18 | |
|
Toto je trochu blbosť Kód: while(pom->vacsi != NULL || pom->mensi != NULL) { if(i==pom->hodnota) break; else if(i<pom->hodnota) pom=pom->mensi; else if(i>pom->hodnota) pom=pom->vacsi; p_hlbka++; } Čo sa stane: Kód: ak mám ľavý, alebo pravý podstrom, tak: ak sa hodnota rovná, našiel som, OK ak je i menšie, idem do ľavého podstromu (Ale čo ak nemám ľavý podstrom?) ak je i väčšie, idem do pravého podstromu (Ale čo ak nemám práve pravý podstrom?) Takže kým zadávaš jednu stranu, je všetko OK. Keď ale zadáš číslo z "inej strany", podmienka vo while cykle prejde (lebo máš ľavý, ALEBO pravý podstrom), no ten správny to nenájde a program spadne. Takže to skús nejako takto: Kód: while(1) { if(i == pom->hodnota) //nasiel som, koncim tu break;
if(i < pom->hodnota) //ak je hodnota mensia { if( pom->mensi ) //a existuje lavy podstrom pom = pom->mensi; //idem do laveho podstromu else break; //inak koncim a pridam uzol }
if(i > pom->hodnota) //ak je hodnota vacsia { if( pom->vacsi ) //a existuje pravy podstrom pom = pom->vacsi; //idem do praveho podstromu else break; //inak koncim a pridam uzol }
p_hlbka++; } PS: Vážené dámy a páni, alebo keď už vážení, tak vážení s mäkkým i
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
| Stránka: 1 z 1
| [ Príspevkov: 2 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| binarny strom v Assembler, C, C++, Pascal, Java | 4 | 2091 | 25.02.2009 21:18 stewe | | Strom z cesty v PHP, ASP | 1 | 309 | 05.02.2014 17:49 killer | | Slovnik pre lexikograficky strom. v Assembler, C, C++, Pascal, Java | 0 | 875 | 06.04.2008 10:25 danciwo | | Vyhladavaci skript v PHP, ASP | 15 | 1152 | 22.10.2008 22:14 Blackshadow | | Vyhľadavací robot v PHP, ASP | 8 | 636 | 21.10.2007 22:05 Bananslovak | | Čo je to za strom? Na konároch má akoby klince... v Voľný čas a hobby | 1 | 424 | 06.06.2023 5:44 Max64 | | Pomoc s úpravou vo vyhľadávači v Internetový marketing, SEO, reklama | 1 | 548 | 21.11.2021 14:57 void | | Cookiebar text vo vyhladavaci Google v HTML, XHTML, XML, CSS | 2 | 392 | 12.10.2016 8:29 neopagan | | pozicia vo vyhladavaci /google.sk/ v Internetový marketing, SEO, reklama | 29 | 3339 | 06.12.2007 14:14 pa3ck | | vyhladavaci string heureka.sk pre Operu v Sieťové a internetové programy | 2 | 383 | 27.07.2012 16:56 mtxd | | pozicia vo vyhladavaci pre rozne prehliadace [ Choď na stránku: 1, 2 ] v Internetový marketing, SEO, reklama | 41 | 2815 | 22.06.2009 19:33 Tominator | | Ako sa zobrazovat na mape vo vyhladavaci? v Ostatné | 1 | 378 | 19.06.2017 13:33 ado130 | | Mám sa učiť C ++/objective C/ C#? v Assembler, C, C++, Pascal, Java | 5 | 724 | 08.07.2014 20:40 XOLOO | | Hladam hracov na C&C Generals Zero Hour v Počítačové hry | 10 | 1243 | 07.03.2007 19:22 Spirit | | K: PC Literaturu- C++/C#/java/python/ruby/RoR v Kúpim | 0 | 405 | 13.05.2014 18:16 expresado | | Hledá se programátor C/C++ pro vesmírné projekty (Praha) v Ponuka práce | 0 | 1116 | 10.05.2016 14:59 evolvsys |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|