Obousměrný spojový seznam (nahrání souboru .txt) a následná práce s nim – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Obousměrný spojový seznam (nahrání souboru .txt) a následná práce s nim – .NET – Fórum – Programujte.comObousměrný spojový seznam (nahrání souboru .txt) a následná práce s nim – .NET – Fórum – Programujte.com

 

Jan Krejčí
~ Anonymní uživatel
4 příspěvky
25. 5. 2015   #1
-
0
-

Ahoj, měl jsem za úkol vytvořit obousměrný spojový seznam který umí addbefero, delete, save... 

Ale sekl jsem se u LOAD. Soubor dokážu uložit, následně ho nahrát a zobrazit data, ale už nevím jak s ním následně pracovat. Jde mi o to abych ho mohl nahrát a pak tam třeba ještě něco přidat nebo něco odebrat.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace LinkedList
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Vytvoření seznamu:");

            LinkedList<string> seznam = new LinkedList<string>();
            string pokracovat = "ano";
            while (pokracovat == "ano")
            {
                Console.WriteLine("Vyberte operaci, kterou chcete provédst! ");
                Console.WriteLine("1 - přidání ");
                Console.WriteLine("2 - odebrání ");
                Console.WriteLine("3 - přidání slova za vybrané slovo");
                Console.WriteLine("4 - přidání slova před vybrané slovo");
                Console.WriteLine("5 - hledání slova");
                Console.WriteLine("6 - vypíše seznam");
                Console.WriteLine("7 - smaže seznam");
                Console.WriteLine("8 - uloží do souboru");
                Console.WriteLine("9 - nahraje ze souboru");
                int volba = int.Parse(Console.ReadLine());
                switch (volba)
                {
                    case 1:
                        Console.WriteLine("Přidání slova do seznamu jako poslední");
                        string pridani = Console.ReadLine();
                        seznam.AddLast(pridani);
                        break;
                    case 2:
                        Console.WriteLine("Zadejte slovo které chcete odebrat ze seznamu");
                        string remove = Console.ReadLine();
                        seznam.Remove(remove);
                        break;
                    case 3:
                        Console.WriteLine("Přidání slova za vybrané slovo");
                        Console.WriteLine("Za které slovo chcete přidat údaj");
                        string hledaneZa = Console.ReadLine();
                        seznam.Find(hledaneZa);
                        Console.WriteLine("Zadejte slovo, které chcete přidat");
                        string hledaneZa1 = Console.ReadLine();
                        LinkedListNode<string> pridaniZa1 = seznam.Find(hledaneZa);
                        seznam.AddAfter(pridaniZa1, hledaneZa1);
                        break;
                    case 4:
                        Console.WriteLine("Přidání slova před vybrané slovo");
                        Console.WriteLine("Před které slovo chcete přidat údaj");
                        string hledanePred = Console.ReadLine();
                        seznam.Find(hledanePred);
                        Console.WriteLine("Zadejte slovo, které chcete přidat");
                        string hledanePred1 = Console.ReadLine();
                        LinkedListNode<string> pridaniZa2 = seznam.Find(hledanePred);
                        seznam.AddBefore(pridaniZa2, hledanePred1);
                        break;
                    case 5:
                        Console.WriteLine("Napiště slovo, které chcete najít");
                        string find = Console.ReadLine();
                        LinkedListNode<string> find1 = seznam.Find(find);
                        if (find1 == null)
                        {
                            Console.WriteLine("Slovo " + find + " neni v seznamu");
                        }
                        else
                            Console.WriteLine("Slovo " + find + " je v seznamu");
                        break;
                    case 6:
                        Console.Clear();
                        foreach (string i in seznam)
                            Console.WriteLine("{0} ", i);
                        break;
                    case 7:
                        Console.WriteLine("Chcete smazat celý seznam? (ano/ne)");

                        string smazat = Console.ReadLine();
                        if (smazat == "ano")
                        {
                            seznam.Clear();
                        }

                        break;
                    case 8:

                        using (StreamWriter sw = new StreamWriter(@"soubor.txt"))
                        {
                            foreach (string i in seznam)
                                sw.WriteLine("{0} ", i);
                                sw.Flush();
                        }
                        Console.WriteLine("Do souboru bylo zapsáno.");
                        break;
                    case 9:
                        Console.WriteLine("Vypisuji soubor na obrazovku: ");
                        using (StreamReader sr = new StreamReader(@"soubor.txt"))
                        {
                            string soubor;
                            while ((soubor = sr.ReadLine()) != null)
                            {
                                Console.WriteLine(soubor);
                            }
                        }
                        
                        break;
                    case 10:
                        
                        break;
                }


                Console.WriteLine("Přejete si udělat další změnu v seznamu? [ano/ne]");
                pokracovat = Console.ReadLine();
            }

            Console.WriteLine("Děkuji za použití a přeji pěkný den");
            Console.ReadKey();
        }
    }
}


Budu rád za jakoukoliv pomoc, zkoušel jsem FileStream jen mi to nešlo :-( to samé Stream.CopyTo. Hold nevim jak na to.

Nahlásit jako SPAM
IP: 85.70.6.–
Mutagen
~ Anonymní uživatel
549 příspěvků
25. 5. 2015   #2
-
0
-

Nevim jestli to napíšu dobře, ale pokud vypisuješ do konzole tak je jasný, že se ti nenahraje do seznamu. Za předpokladu, že ho ten seznam nevymazáváš měl by zůstat tak jak jsi uložil soubor. Ale pokud ti jde při vypisování ten seznam aktualizovat udělej to následujcí.

	using (StreamReader sr = new StreamReader(@"soubor.txt"))
	{
		seznam.Clear();
		string soubor;
		while ((soubor = sr.ReadLine()) != null)
                {
			seznam.Add(soubor);
                	Console.WriteLine(soubor);
                }
        }

PS. snad jsem tě dobře pochopil jak jsi to myslel.

Nahlásit jako SPAM
IP: 212.47.26.–
Jan Krejčí
~ Anonymní uživatel
4 příspěvky
25. 5. 2015   #3
-
0
-

Mutagen: díky za pomoc, pomohlo mi to, trávil jsem u toho asi 4 hodiny a nic :-D a nakonec jsem z toho udělal toto díky tobě

using (StreamReader reader = new StreamReader(@"soubor.txt"))
	                    {
                            seznam.Clear();
	                        string soubor;
	                        while ((soubor = reader.ReadLine()) != null)
	                        {
                                LinkedListNode<string> node = seznam.AddLast(soubor);
                                LinkedListNode<string> next = node.Next;
		                    Console.WriteLine(soubor); 
	                        }
	                    }
Nahlásit jako SPAM
IP: 109.80.247.–
Mutagen
~ Anonymní uživatel
549 příspěvků
25. 5. 2015   #4
-
0
-

#3 Jan Krejčí
Jinak bych nerad rýpal nebo tak, ale proč si na každý case nevytvoříš metodu kterou pak budeš v tom case volat? Nebylo by to ulehčení a trošku i přehlednější?

Nahlásit jako SPAM
IP: 212.47.26.–
Jan Krejčí
~ Anonymní uživatel
4 příspěvky
25. 5. 2015   #5
-
0
-

No nějak mě to nenapadlo a spíš to ještě neovládám jak bych chtěl. Tak na to mrknu a zkusím to předělat :-) a přehlednější by to určitě bylo.

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

Podobná vlákna

Obousměrný seznam v C — založil Milan98

Obousmerny seznam procedura — založil sparky29

Duplicity obousmerny seznam — založil sparky29

Struct a práce s ním — založil Jan

 

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