Wątek przeniesiony 2014-01-31 15:43 z C/C++ przez ŁF.

Wczytywanie długiej liczby z pliku do tablicy

0

Witam,
mam pewien problem dotyczący programowania w języku C.
Mam plik w którym zapisana jest duża liczba naturalna - ponad 100 cyfr. Chciałbym ją wpisać do tablicy int w taki sposób, aby każda cyfra zajmowała kolejną komórkę tablicy. Jak to zrobić? Wiem jak otworzyć plik w programie, chodzi mi o sam kod wpisujący każdą kolejną cyfrę tej liczby do kolejnej komórki tablicy.
Pozdrawiam

0
unsigned char Cyfra;
unsigned int Indeks = 0;
std::vector<int> Cyfry; //zamiast int może być unsigned char - jeden grzyb.
while( !Plik.eof() )
{
   Plik>>Cyfra;
   Cyfry.pushback( Cyfra - '0' );
}

pisane z palca.

0

Chodziło mi o język C. Powyższy kod jest chyba w c++?

0
FILE* Plik;
int DlugoscPliku; //pomijam pobranie wielkości pliku!
int* Tablica; //Może być char* Tablica

Tablica = malloc( sizeof(int)*DlugoscPliku );

for( int i = 0; i < DlugoscPliku; ++i )
   Tablica[i] = (fgetc( Plik ) - '0');

free( Tablica );

Z palca as well.

0

Dziękuję bardzo za szybkie odpowiedzi. Mam jeszcze jedno pytanie: mam plik w którym dwie duże liczby zapisane są w kolejnych liniach i chciałbym napisać kod który zliczy ile cyfr ma pierwsza i druga liczba. Dla jednej liczby napisałem taki kod:

while( fgetc(f) != EOF )
		count++;

Jak to będzie wyglądało dla 2 liczb zapisanych w kolejnych liniach?

0

Wieś przeczytaj byle jaki kurs C/C++ pytasz o takie podstawy które są przeważnie tłumaczone na pierwszych kilku stronach.

0

Zależy od formatu łamania wierszy:

int line[2];
int index = 0; 
char znak;
while(  (znak = fgetc(f)) != EOF ) {if( znak == '\n') {++index; continue;} ++line[index];}

albo:

int line[2];
int index = 0;
char znak;
while( (znak = fgetc(f)) != EOF )
{
   if( znak=='\r' && ((znak = fgetc(f)) == '\n' ) {++index; continue;}
   ++line[index];
}

Zakładam, że plik ma zawsze 2 linie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1