Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zadanie 6 matura rozszerzona z informatyki 2013

Ostatnio zmodyfikowano 2013-05-23 17:49
Autor Wiadomość
ziombel3
Temat założony przez niniejszego użytkownika
Zadanie 6 matura rozszerzona z informatyki 2013
» 2013-05-22 17:11:19
Witam. Nie zdążyłem zrobić tego zadania na maturze i spróbowałem dokończyć w domu, jednak program nie działa poprawnie.
Zadanie: http://www.cke.edu.pl/files/file/Arkusze-2013/Matura-2013/informatyka_PR_2.pdf
Problem: Program się uruchamia i wykonuje podpunkt a, oraz pierwszą pętlę podpunktu b. Jednak w programie wyskakuje mi komunikat:
process exited with return value 3221225725
Wyjaśnienie danych na dole
C/C++
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

//b
int zamiana_na_dziesietna( int tab[], int cyfry )
{
    int j, k, i, dziesietna = 0;
    for( j = 0; j < cyfry; j++ )
    {
        i = 1;
        for( k = j + 1; k < cyfry; k++ )
        {
            i = i * 8;
        }
        dziesietna = dziesietna + tab[ j ] * i;
       
    }
   
}
//b

int main( int argc, char * argv[] )
{
    //a
    string liczba;
    int pozycja, a = 0, j = 0, tab2[ 5000 ], tab[ 7 ];
    ifstream plik( "dane.txt" );
    while( !plik.eof() )
    {
        getline( plik, liczba );
        pozycja = liczba.size() - 1;
        if( liczba[ 0 ] == liczba[ pozycja ] )
        {
            j++;
        }
    }
    cout << j << endl;
    plik.close();
   
   
    //b
    ofstream zapis( "liczby.txt" );
    int i = 0, d = 0;
    plik.open( "dane.txt" );
   
    while( !plik.eof() )
    {
        getline( plik, liczba );
        pozycja = liczba.size();
        tab2[ d ] = pozycja;
        d++;
        for( i = 0; i < pozycja; i++ )
        {
            zapis << liczba.substr( i, 1 ) << " ";
        }
        zapis << " " << endl;
       
    }
   
    plik.close();
    zapis.close();
   
    plik.open( "liczby.txt" );
    zapis.open( "liczby2.txt" );
    i = 0, j = 0;
   
    for( j = 0; j < 5000; j++ )
    {
        while( i < tab2[ j ] )
        {
           
            plik >> tab[ i ];
            i++;
        }
        i = 0;
        d = tab2[ j ];
        zapis << zamiana_na_dziesietna( tab, d );
       
    }
    plik.close();
    zapis.close();
   
    //c
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}

Plik dane: Liczby w systemie 8, pierwsze linie:
1334473
267546
21500
474353
372702
317330
363100
250170

Plik liczby: Liczby te co wyżej, jednak każda cyfra oddzielona spacją(nie znalazłem sposobu na wprowadzenie 1 cyfry do tablicy)

Plik liczby2: Tam miały się pojawić liczby po 1 w linii, w systemie 10.

Chce zrobić zadanie do końca. Może nawet inną metodą.
P-83602
DejaVu
» 2013-05-22 21:28:19
P-83622
kejkun
» 2013-05-23 13:32:22
"Konwertuje wartość zapisaną w łańcuchu znaków w dowolnym systemie liczbowym do postaci liczby typu całkowitego"
tzn. ze jak mamy w stringu  w systemie 8 liczbe,

to przez uzycie tego otrzymamy liczbe w systemie 10 czy 8 ?
P-83683
pekfos
» 2013-05-23 15:03:38
to przez uzycie tego otrzymamy liczbe w systemie 10 czy 8 ?
Pytanie pomocnicze:
C/C++
int x = cokolwiek;
W jakim systemie liczbowym jest x?
P-83693
kejkun
» 2013-05-23 16:31:47
tutaj wg mnie w dowolnym, mozemy przechowywac dana  " liczbe " nawet np. "1001 (2) " jako int a= 1001;
tylko, ze my wiemy w jakim on jest systemie.
ale sie pytam jak to dziala ?
konwertuje po prostu stringa na inta ?
czy rowniez zmienia system ?
Bo jesli tylko zmienia string na inta, to duzo jest sposobow na to.
czy to cos dodatkowo zmienia 1.string-> int  2 .system [tu 8 ] -> 10 ?  ?
P-83708
pekfos
» 2013-05-23 16:48:53
» standard Cstrtol
Tym razem przeczytaj całość.
P-83710
kejkun
» 2013-05-23 17:22:52
dobra czyli zmienia system przy tym .

" 0xfftu "
Jeżeli pierwszym znakiem jest '0', a drugim znakiem jest 'x' albo 'X' to łańcuch znaków będzie interpretowany jako system heksadecymalny (szesnastkowy). 
 

no dobrze, to rozumiem tak:
tu " 2 " znak to " x " , wiec jest to kod 16.

teraz   ta biblioteka zmieniajac to z kodu 16 ,
uwzglednia ten " x " w obliczeniach czy tez nie ? Bo o ile sie nie myle, to on nie nalezy do kodu "16".
jest to kod od  " 0 - 9 oraz A , B ,C ,D ,E (15) , F, "
skoro tak , to co sie dzieje gdy natrafi na literke np. " t "
ktora nie nalezy do kodu 16 ?

to jedno pytanie, ale wracajac do matury:
Jeżeli pierwszym znakiem jest '0', a drugim znakiem nie jest 'x' ani 'X' to łańcuch znaków będzie interpretowany jako system oktalny (ósemkowy). 

a co jesli na maturze, pierwszym znakiem było '1' ?
wtedy zle dziala ta zamiana , hm ?
P-83714
pekfos
» 2013-05-23 17:27:46
skoro tak , to co sie dzieje gdy natrafi na literke np. " t "
a co jesli na maturze, pierwszym znakiem było '1' ?
» standard Cstrtol
Tym razem (uważnie) przeczytaj całość..
P-83715
« 1 » 2
  Strona 1 z 2 Następna strona