Skocz do zawartości

tablica tablic


Rekomendowane odpowiedzi

witam!!! Dopiero zaczyna uczyć się c# i potrzebuje waszej pomocy.

Mój problem polega na tym iż mam plik tekstowy postaci:

 

4 2 3

5 18 7 22

10 6

4 9 15

 

Liczby te są przykładowe. W pierwszej linijce zawsze bedą tylko trzy jakieś liczby (w związku z tym w tablicy muszą znajdować się trzy tablice). Określają one ile liczb bedzie w następnych trzech linijkach.

Musze danymi z tego pliku wypełnic tablice tablic. Jednak nie mogę zrobić tego z klawiatury, tylko muszą one zostać wczytane z pliku. Bardzo proszę o waszą pomoc.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Można wiedzieć po co zakładasz drugi ten sam temat? Pisałem wyraźnie na maila, że jutro napiszę prawidłowy algorytm... Następnym razem jak zrobisz coś takiego, to będzie ostrzeżenie i wywalę temat. Tymczasem masz, napisałem (a za poprzednie algorytmy nawet mi nie podziękowałeś...):

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

namespace Tablica
{
   class Program
   {
       static void Main( string[] args )
       {
           // Otwieramy plik do odczytu
           FileStream plik = new FileStream( "dane.txt", FileMode.Open );
           StreamReader odczyt = new StreamReader( plik );

           // Odczytujemy pierwszą linię (jako string) a następnie rozbijamy na tablicę przy użyciu metody Split i separatora ' '
           string[] zakres = ( odczyt.ReadLine() ).Split( ' ' );

           // Inicjalizujemy tablicę wielowymiarową typu poszarpana (jagged array)
           int[][] tablica = new int[zakres.Length][];

           // Powtarzamy pętlę tyle razy ile jest liczb w pierwszym wierszu pliku
           for ( int i = 0; i < zakres.Length ; i ++ )
           {
               // Konwertujemy liczbę z formatu tekstowego
               int k = int.Parse( zakres[i] );

               // Tworzymy nową podtablicę o odpowiedniej wielkości
               tablica[i]  = new int[ k ];

               // Odczytujemy linię i natychmiast rozbijamy ją jak wcześniej pierwszą linię
               string[] liczby = ( odczyt.ReadLine() ).Split( ' ' );

               // Powtarzamy tyle razy pętlę ile jest liczb (teoretycznie, ponieważ w pierwszej linii ktoś może nakłamać z liczbami)
               for ( int j = 0 ; j < k ; j++ )
               {
                   // Przypisujemy odpowiednią wartość
                   tablica[i][j] = int.Parse( liczby[j] );
               }
           }


           //Sprawdzamy prawidłowość powyższego algorytmu:

           for ( int i = 0 ; i < tablica.Length ; i++ )
           {
               Console.WriteLine( String.Format( "Ilość liczb w wierszu {0}: {1}", i+1, tablica[i].Length ) );

               string liczby = "";

               foreach ( int k in tablica[i] )
               {
                   liczby += k + " ";
               }
               Console.WriteLine( liczby + "\n" );
           }


           Console.WriteLine( "Zakończono odczyt, naciśnij jakiś klawisz..." );
           Console.ReadKey();
       }
   }
}

Odnośnik do komentarza
Udostępnij na innych stronach

Przepraszam że wcześniej nie podziekowałem, żeby nie było nie jestem jakimś tam chamem ani prostakiem, poprostu jakoś się nie złozyło. Bardzo doceniam twoją pomoc i dziekuję.

A co do drugiego postu to założyłem go ponieważ sądziłem że skoro odpowiedziałeś na niego to nikt się już nim nie zainteresuje. A instrukcja ta jest mi bardzo potrzebna.

Jeszcze raz wielkie dzięki.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...