Witam.
Niestety wujek google mi nie pomógł(co za drań). Mam problem z rozwiazaniem zadania z matury 2013.
Zagubione dziecko ze mnie już przy podpunkcie A. Jak string zamienić na tablice znaków ?
Treść zadania :
Zadanie 6. Liczby (10 pkt)
W pliku dane.txt znajduje się 5 000 liczb całkowitych z przedziału od 108 do 20000008,
zapisanych w systemie ósemkowym, po jednej liczbie w wierszu. W wybranym przez siebie
języku programowania napisz program, za pomocą którego uzyskasz odpowiedzi
na poniższe polecenia. Odpowiedzi zapisz w pliku wyniki6.txt, a odpowiedź do każdego
podpunktu poprzedź literą oznaczającą ten podpunkt.
a) Ile spośród liczb zapisanych w pliku dane.txt spełnia taki warunek, że pierwsza cyfra
tej liczby jest równa ostatniej cyfrze tej samej liczby?
b) Podaj, ile liczb w pliku dane.txt, po ich zapisaniu w systemie dziesiętnym, spełnia
warunek podany w podpunkcie a), tzn. pierwsza cyfra liczby jest równa ostatniej cyfrze
tej samej liczby.
Przykład: Liczba 2038 = 13110 spełnia podany warunek, natomiast 71238 = 366710 nie
spełnia żądanego warunku.
c) Ile spośród liczb zapisanych w pliku dane.txt spełnia warunek, że rozpoczynając od
najbardziej znaczącej cyfry w zapisie ósemkowym, każda kolejna cyfra tej liczby nie jest
mniejsza od cyfry poprzedzającej? Podaj największą i najmniejszą liczbę z pliku
dane.txt, które spełniają ten warunek.
Przykład: Liczba 123357 spełnia podany warunek, ponieważ 1≤2≤3≤3≤5≤7.
Moje wypociny :
#include <iostream>
#include <cstring>
#include <fstream>
#include <cstdlib>
using namespace std;
int main( int argc, char ** argv ) {
string linia;
fstream plik;
plik.open( "dane.txt", ios::in );
if( plik.good() == true )
{
for( int i = 0; i < 5000; i++ )
{
getline( plik, linia );
char tab[ 8 ] = linia;
int p = strlen( tab ) - 1;
int l = 0;
if( tab[ l ] == tab[ p ] );
{
for( int j = 0; j < p; j++ )
cout << tab[ j ];
}
}
}
return 0;
}