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

Wczytywanie liczb z pliku i zapis ich do innego w postaci słownej.

Ostatnio zmodyfikowano 2014-05-25 21:40
Autor Wiadomość
staho
Temat założony przez niniejszego użytkownika
Moje rozkimny
» 2014-05-25 17:20:57
Cześć. Myślałem nad tym programem długo, w końcu zobaczyłem w podręczniku analogiczny (troszeczkę) program który miał zmieniać litery z dużych na małe (coś w tym stylu). Przepisałem go i usiłowałem nagiąć go pod swoje potrzeby. Niestety, brakuje mi "trochę" wiedzy i staję w kropce nie wiedząc gdzie iść dalej. Mam nadzieję że ktoś będzie mi w stanie powiedzieć gdzie popełniłem błędy, czego powinienem użyć w przypadku tego błędu.
Łapcie tutaj mój nieszczęsny kod:
C/C++
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
void zamien( char * s );

int main()
{
    int i;
    int s[ 3 ];
    char a[ 255 ];
    FILE * dane, * wynik;
    dane = fopen( "liczby.txt", "r" );
    wynik = fopen( "slownie.txt", "w" );
    i = 1;
    while( !feof( dane ) ) // to co sie tutaj znajduje to istna strzelanina z podrecznika
    {
        itoa( i, a, 10 );
        strcat( a, "-" );
        fgets( s, 3, dane );
        zamien( & s[ 0 ] );
        strcat( a, s );
        if( !feof( dane ) )
             fputs( a, wynik );
       
        i++;
    }
}

void zamien( char * s )
{
    int i, k, z;
    k = strlen( s );
    for( i = 0; i < k; i++ )
    {
        z = s[ i ];
        switch( z ) //Wiem, wiem, tutaj jest zle ale nie wiem jak to zmienic :(
        {
        case 0: a[ i ] = "zero"; break;
        case 1: a[ i ] = "jeden"; break;
        case 2: a[ i ] = "dwa"; break;
        case 3: a[ i ] = "trzy"; break;
        case 4: a[ i ] = "cztery"; break;
        case 5: a[ i ] = "piec"; break;
        case 6: a[ i ] = "szesc"; break;
        case 7: a[ i ] = "siedem"; break;
        case 8: a[ i ] = "osiem"; break;
        case 9: a[ i ] = "dziewiec"; break;
           
        }
    }
}
P-110849
Tebex
» 2014-05-25 21:40:50
Bardzo mi się nudziło, i napisałem to:

C/C++
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main()
{
    fstream wej, wyj; //pliki wejsciowy i wyjsciowy
    char znak[ 255 ];
    int wskaznik = 0, kopwskaznik;
    string slowo[ 255 ];
    wej.open( "wej.txt", ios::in );
    wyj.open( "wyj.txt", ios::trunc | ios::out );
    while( wej.good() ) //
    { //
        wej >> znak[ wskaznik ]; //     wczytywanie danych do tablicy charów
        wskaznik++; //
    } //
    wskaznik = 0;
   
    do //cała pętla to interpretowanie znaków, w pliku musi być znak kończący ciąg znaków(wiem, trochę prymitywne)
    {
        if( znak[ wskaznik ] == '1' )
             slowo[ wskaznik ] = "Jeden";
        else if( znak[ wskaznik ] == '2' )
             slowo[ wskaznik ] = "Dwa";
        else if( znak[ wskaznik ] == '3' )
             slowo[ wskaznik ] = "Trzy";
        else if( znak[ wskaznik ] == '4' )
             slowo[ wskaznik ] = "Cztery";
        else if( znak[ wskaznik ] == '5' )
             slowo[ wskaznik ] = "Piec";
        else if( znak[ wskaznik ] == '6' )
             slowo[ wskaznik ] = "Szesc";
        else if( znak[ wskaznik ] == '7' )
             slowo[ wskaznik ] = "Siedem";
        else if( znak[ wskaznik ] == '8' )
             slowo[ wskaznik ] = "Osiem";
        else if( znak[ wskaznik ] == '9' )
             slowo[ wskaznik ] = "Dziewiec";
        else if( znak[ wskaznik ] == '0' )
             slowo[ wskaznik ] = "Zero";
        else if( znak[ wskaznik ] == '.' )
        {
            kopwskaznik = wskaznik;
            wskaznik = 0;
           
            break;
        }
        else
             slowo[ wskaznik ] = "Inny znak";
       
        wskaznik++;
    }
    while( true );
   
    while( wskaznik != kopwskaznik ) //zapisywanie znaków do pliku
    {
        wyj << slowo[ wskaznik ] << "\n";
        wskaznik++;
    }
    return 0;
}

Działa? Działa. Wiem, że można to dopracować, ale pisałem na szybko.
P-110875
1 « 2 »
Poprzednia strona Strona 2 z 2