logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C++] Dynamiczne tworzenie tablic dla macierzy z pliku

Mody 12 Maj 2008 20:05 4095 2
REKLAMA
  • #1 5133568
    Mody
    Poziom 25  
    Posty: 922
    Pomógł: 42
    Ocena: 28
    Napisałem prosty kalkulator operujący na macierzach lecz nie mogę poradzić
    sobie z pewnym problemem. Program czyta dane z pliku, który wygląda następująco
    3 3
    1 2 3
    4 5 6
    7 8 9
    
    3 3
    1 2 3
    4 5 6
    7 8 9

    pierwsze dwie cyfry to informacje o rozmiarze macierzy co odpowiada
    zmiennym w1, k1 oraz dla drugiej macierzy w2 i k2. Na początku definiuje
    rozmiar tablic i jest on na razie określony na [15][15]. Nie wiem jak zrobić
    aby zdefiniowane tablice miały rozmiar taki jak macierze z pliku.

    Pozdrawiam
    Załączniki:
    • kalkulator.cpp (9.1 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #2 5133712
    trebuch1
    Poziom 26  
    Posty: 823
    Pomógł: 84
    Ocena: 130
    Tablice:
    W czasie kompilacji ustalane jest miejsce na tablice w pamięci programu.
    Kompilator zatem juz na tym etapie powinien znać ich rozmiar. Nie jest mozliwe poznanie rozmiaru na podstawie informacji zawartej w pliku danych.

    Wskaźniki:
    Służą do wskazywania adresów pod którymi oczekujemy wartosci naszych zmiennych. Mozna zatem zadeklarować jedną tablicę wstażników na wszystkie elementy macierzy. Adresy elementów wszystkich macierzy wyliczać danymi z pliku. Trochę skomlikuje to program ale jest rozwiązywalne.

    Dane z pliku o rozmiarach macierzy przechowywałbym w odzielnej tablicy
    Elementy wszystkich macierzy zaczytane z pliku wpisałbym sekwencyjnie do jedtej zadeklarowanej tablicy wskaźnikowej. Poprządek w tej tablicy
    zapewniałaby tablica rozmiarów macierzy.
  • #3 5134554
    lepos
    Poziom 13  
    Posty: 82
    Pomógł: 5
    Poczytaj o dynamicznym tworzeniu tablic...
    https://www.elektroda.pl/rtvforum/topic411378.html tu chociażby jest wątek o tym...
    
    int m, n; //rozmiar macierzy
    int **macierz;
    //po wczytaniu m i n z pliku
    int *macierz = new int *[m];
    for (int i=0; i<m;++i)
     macierz[i]=new int[n];
    
    pozniej normalnie operujesz jak na tablicy dwuwymiarowej, czyli np. macierz[1][2]=4;
    
REKLAMA