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

Pomoc program sie wysypuje -do oddania jutro

Ostatnio zmodyfikowano 2013-01-15 03:42
Autor Wiadomość
cryuff
Temat założony przez niniejszego użytkownika
Pomoc program sie wysypuje -do oddania jutro
» 2013-01-14 21:18:24
C/C++
// wkoncu.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>

using namespace std;

int zliczenie( string );
void menu();
int wybor;
string sort1az( int k, string tabs[] );
string sort1za( int k, string tabs[] );
string sort2az( int k, string tabs[] );
string sort2za( int k, string tabs[] );
string najdluzszy( int k, string tabs[] );
string najkrotszy( int k, string tabs[] );
int main()
{ int i = 0;
    int a;
    int wybor;
    string sciezka;
    cout << "Podaj sciezke do pliku .txt (pamietaj o uzyciu podwojnych backshlash'y)" << endl;
    cin >> sciezka;
    cout << endl;
    string * tab;
    tab = new string[ zliczenie( sciezka ) ];
    a = zliczenie( sciezka );
    ifstream plik;
    plik.open( sciezka.c_str(), ios::in | ios::out );
    if( plik )
    { string linia;
        while( !plik.eof() )
        {
            plik >> linia;
            { tab[ i ] = linia;
                i++; }
        }
    }
   
    else
    {
        cout << "Blad. Nie mozna odczytac pliku." << endl;
    }
    menu();
    cin >> wybor;
    switch( wybor )
    {
    case 0:
        {
            for( int i = 0; i < a; i++ )
                 cout << tab[ i ] << endl;
           
            break;
        }
    case 1:
        {
            tab[ a ] = sort1az( a, tab );
            for( int i = 0; i < a; i++ )
                 cout << tab[ i ] << endl;
           
            break;
        }
    case 2:
        {
            tab[ a ] = sort2az( a, tab );
            for( int i = 0; i < a; i++ )
                 cout << tab[ i ] << endl;
           
            break;
        }
    case 3:
        {
            tab[ a ] = sort1za( a, tab );
            for( int i = 0; i < a; i++ )
                 cout << tab[ i ] << endl;
           
            break;
        }
    case 4:
        {
            tab[ a ] = sort2za( a, tab );
            for( int i = 0; i < a; i++ )
                 cout << tab[ i ] << endl;
           
            break;
        }
    case 5:
        {
            cout << "Najdluzszy wyraz to: " << najdluzszy( a, tab );
            break;
        }
    case 6:
        {
            cout << "Najkrotszy wyraz to: " << najkrotszy( a, tab );
            break;
        }
       
       
       
       
       
    }
    system( "PAUSE" );
    return 0;
}

void menu()
{
   
    cout << "Wybierz jedna z funkcji programu:" << endl;
    cout << "Wpisz 0, aby wypisac dotychczasowo otrzymany slownik" << endl;
    cout << "Wpisz 1, aby pogrupowac wyrazy od A do Z przy pomocy pierwszego algorytmu" << endl;
    cout << "Wpisz 2, aby pogrupowac wyrazy od A do Z przy pomocy drugiego algorymty" << endl;
    cout << "Wpisz 3, aby pogrupowac wyrazy od Z do A przy pomocy pierwszego algorytmu" << endl;
    cout << "Wpisz 4, aby pogrupowac wyrazy od Z do A przy pomocy drugiego algorytmu" << endl;
    cout << "Wpisz 5, aby odnalezc najdluzszy wyraz" << endl;
    cout << "Wpisz 6, aby odnalezc najkrotszy wyraz" << endl;
    cout << "Wpisz 7, aby dopisac wyraz" << endl;
    cout << "Wpisz 8, aby wykasowac wyraz" << endl;
    cout << "Wpisz 9, aby zapisac wyniki do pliku" << endl;
   
   
}

int zliczenie( string link )
{ int licznik = 0;
    string slowo;
    ifstream pliczek;
    pliczek.open( link.c_str() );
    while( pliczek >> slowo ) licznik++;
   
    return licznik;
    pliczek.close();
   
}

string sort1az( int k, string tabs[] )
{ string temp;
    int dopoki = 1;
    while( dopoki )
    {
        dopoki = 0;
        for( int i = 0; i < k; i++ )
        {
            if( *( tabs + i ) >*( tabs + i + 1 ) )
            {
                temp =*( tabs + i );
                *( tabs + i ) =*( tabs + i + 1 );
                *( tabs + i + 1 ) = temp;
                dopoki = 1; }
        }
    }
    system( "cls" );
    return( * tabs );
}

string sort1za( int k, string tabs[] )
{ string temp;
    int dopoki = 1;
    while( dopoki )
    {
        dopoki = 0;
        for( int i = 0; i < k; i++ )
        {
            if( *( tabs + i ) <*( tabs + i + 1 ) )
            {
                temp =*( tabs + i );
                *( tabs + i ) =*( tabs + i + 1 );
                *( tabs + i + 1 ) = temp;
                dopoki = 1; }
        }
    }
    system( "cls" );
    return( * tabs );
}

string sort2az( int k, string tabs[] )
{
    int i, j;
    string temp;
    for( j = k - 2; j >= 0; j-- )
    {
        temp = tabs[ j ];
        i = j + 1;
        while(( i <= k - 1 ) &&( temp > tabs[ i ] ) )
        {
            tabs[ i - 1 ] = tabs[ i ];
            i++;
        }
        tabs[ i - 1 ] = temp;
    }
    system( "cls" );
    return( * tabs );
}

string sort2za( int k, string tabs[] )

{ return( * tabs ); }
string najdluzszy( int k, string tabs[] )
{ string naj;
    naj = tabs[ 0 ];
    for( int i = 0; i < k; i++ )
    { if( tabs[ i ].length() > tabs[ i + 1 ].length() )
             naj = tabs[ i ];
        else naj = tabs[ i + 1 ];
       
    }
    return naj;
}

string najkrotszy( int k, string tabs[] )
{
    string najk;
    najk = tabs[ 0 ];
    for( int i = 0; i < k; i++ )
    { if( tabs[ i ].length() < tabs[ i + 1 ].length() )
             najk = tabs[ i ];
        else najk = tabs[ i + 1 ];
       
    }
    return najk;
}
to jest kod mojego programu,
wysypuje się on jeśli wczytam pliki txt z dluzsza iloscia wyrazow, co zrobic?
P-73968
DejaVu
» 2013-01-14 21:29:05
Zapoznaj się z tematem: » Porady dla użytkowników cpp0x.plZakładanie tematów na forum zalecenie
P-73970
cryuff
Temat założony przez niniejszego użytkownika
» 2013-01-14 21:34:45
Temat poprawiony program dalej się w czasie debugowania wysypuje.
Działa przy case 0, ale przy case 1 czy 4 już nie
P-73971
DejaVu
» 2013-01-15 03:42:55
Pierwsze co się rzuca w oczy to pisanie poza zakresem tablicy w linijkach analogicznych do tej:
C/C++
tab[ a ] = sort1az( a, tab );
P-73990
« 1 »
  Strona 1 z 1