Načítanie súboru do matice – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Načítanie súboru do matice – C / C++ – Fórum – Programujte.comNačítanie súboru do matice – C / C++ – Fórum – Programujte.com

 

Marcel
~ Anonymní uživatel
14 příspěvků
2. 12. 2011   #1
-
0
-

nazdar. Potreboval by som pomoc s jedným zadaním. Mám zo súboru načítat maticu , v prvom riadku má byt počet riadkov a stlpcov, dalšie hodnoty budú hodnotami matice. Jakým sposobom to mám načítat do tej matice? hlavne ide o to jak odtial dostanem tie rozmery matice z toho prvého riadku. Dakujem za pomoc

Nahlásit jako SPAM
IP: 84.245.95.–
Marcel
~ Anonymní uživatel
14 příspěvků
2. 12. 2011   #2
-
0
-

#1 Marcel
zabudol som dodat že v C++

Nahlásit jako SPAM
IP: 84.245.95.–
crazy
~ Moderátor
+10
Grafoman
2. 12. 2011   #3
-
0
-

#1 Marcel

int radky, sloupce;
int **matice;
inFile >> radky >> sloupce;
matice = new int*[radky];
for(int i = 0; i < radky; i++) {
	matice[i] = new int[sloupce];
	for(int j = 0; j < sloupce; j++)
		inFile >> matice[i][j];
}

takhle, je to bez ověřování proměnných atd..

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Marcel
~ Anonymní uživatel
14 příspěvků
2. 12. 2011   #4
-
0
-

neviem kde je chyba ale píše mi to do riadku a vynecháva niektoré čísla 

Nahlásit jako SPAM
IP: 84.245.95.–
crazy
~ Moderátor
+10
Grafoman
2. 12. 2011   #5
-
0
-

#4 Marcel
tak sem hoď tvůj kód a ukázku toho souboru s maticí...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Marcel
~ Anonymní uživatel
14 příspěvků
5. 12. 2011   #6
-
0
-

velmi pekne dakujem :) po odstránení pár vlastných chýb to funguje :) fakt díky.

Nahlásit jako SPAM
IP: 84.245.95.–
Marcel
~ Anonymní uživatel
14 příspěvků
6. 12. 2011   #7
-
0
-

a ešte sa chcem spýtat že ked chcem dat príkaz načítanie z matice ako funkcu cez void, tak ako tam zadeklarujem tú maticu (int** mat) ?

void nacitaj()
{int i,j,m,n; int **mat ;
    char *inname = "test.txt";
    ifstream infile(inname);

    if (!infile) {
        cout << "Nastal problem s otvorenim suboru "
             << inname
             << " na citanie."
             << endl;
        return ;
    }
else
     {

infile >> m >> n;
mat = new int*[m];
for( i = 0; i < m; i++) {
mat[i] = new int[n];
for(j = 0; j < n; j++)
  {infile >> mat[i][j];}

}

}

return;

}

takto to mám spravené, ale ked chcem tu istu maticu použit v nejakej inej funkcii, napr výpis jak keby ju nevdelo rozpoznat, neviem jak ju mám zadeklarovat.

void vypis( )
{  int **mat;
    int i,j;
   
    for (i=0;i<m;i++) {
        for(j=0;j<n;j++)
{
    cout.width(5);
    cout<<mat[i][j];
}
cout<<endl;
}
return;
}

toto mi nefunguje neviem kde je chyba, ale myslím že v niečo s tým zápisom s maticou ale neviem si rady. fakt díky.

Nahlásit jako SPAM
IP: 84.245.95.–
vitamin+8
Grafoman
6. 12. 2011   #8
-
0
-

#7 Marcel
vo funkcii vypis() pouzivas neinicializovanu maticu, ked nacitas/vytvoris maticu, tak ju musis dostat do funkcie ako parameter (alebo this, globalnu premennu, ...) . Cize funkcia bude vyzerat dako takto: 

void vypis(int ** mat, size_t riadky, size_t stlpce);

Kedze programujes v c++, tak sa uplne ziada pouzit na maticu triedu ktora bude obsahovat samotne data, pocet riadkov a stlpcov. Potom moze vyzerat funkcia takto:

class matica{
	int **mat;
	size_t riadky;
	size_t stlpce;
	public:
	//konstruktor
	//destructor
	//...
};

void vypis(const matica &mat);

alebo rovno:

class matica{
	//...

	void vypis();
	void nacitaj(const string &meno_suboru);
};

Mozno by bolo dobre alokovat maticu ako jednorozmerne pole( new int[riadky*stlpce]), bude zaberat menej miesta, alokacia bude rychlejsie a bude sa lepsie zapisovat do suboru; Na pristup k prvkom matice sa da pekne pretazit operator []

Nahlásit jako SPAM
IP: 95.105.128.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
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, 70 hostů

Podobná vlákna

Načítanie matice zo súboru — založil DušanDinoZzo

Program nacitanie matice — založil pcmaker

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ý