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

Wyszukiwanie najkrótszego słowa w tekście

Ostatnio zmodyfikowano 2012-07-30 19:18
Autor Wiadomość
matka5432
Temat założony przez niniejszego użytkownika
Wyszukiwanie najkrótszego słowa w tekście
» 2012-07-27 17:59:16
Witajcie, to znowu ja z malym problem ;>

Nie wiem dlaczego ta funkcja nie dziala tak jak bym chcial, czyli wypisuje na konsole ostatnie slowo z wpisanego przeze mnie tekstu. Po wprowadzeniu tekstu powinna wyszukac najkrotsze slowo, po czym je wyswietlic. Nie wiem jak zrobic, aby tak sie stalo.
a oto ona:
C/C++
[
void sortowanie( int iloscSlow ) //funkcja sortujaca slowa (od najkrotszych od najdluzszych)
{
    int ilosc = 0; //zmienna kontolujaca ilosc powtorzen petli
   
    do
    {
       
        ilosc++;
        string napis1;
        int ilosc2 = 0; //zmienna kontolujaca ilosc powtorzen petli
        int tablica3[ iloscSlow ];
        int ktory;
       
        do
        {
           
            ilosc2++;
            tablica3[ ilosc2 ] = tablica[ 0 ][ ilosc2 ].size();
            int ilosc3 = 0; //zmienna kontolujaca ilosc powtorzen petli
            int czy = 0;
           
            do
            {
               
                ilosc3++;
               
                if( tablica3[ ilosc2 ] < tablica3[ ilosc3 ] ) //tutaj sa sprawdzane warunki roznych mozliwosci tak
                { //dlugo, az znajdzie sie najkrutsze slowo
                   
                    czy++; //Jesli mamy 5 slow a 4 sa dluzsze od danego slowa to zmienna
                    if( czy ==( iloscSlow - 1 ) ) //"czy" powinna sie rownac ilosci wszystkich slow - 1 slowo
                    {
                       
                        tablica[ 1 ][ 1 ] = tablica[ 0 ][ ilosc2 ]; //jesli powyzszy warunek zostanie spelniony
                    } //tablica[1][1] klasy string powinna sie
                } //rownac najkrutszemu slowu
               
            } while( ilosc3 !=( iloscSlow * iloscSlow ) );
           
           
           
        } while( iloscSlow != ilosc2 );
       
       
       
    } while( ilosc != iloscSlow );
   
    cout << tablica[ 1 ][ 1 ] << endl; //tutaj powinno zostac wyswietlone nakjkrutsze slowo
   
}
 Potrafi ktos powiedziec co jest zle?
Zapomnialem dodac, ze "tablica" jest globalna na tablicy[0][n] sa zapisane slowa, ktore powinny zostac zapisane na ta sama tablice tyle, ze: "tablica -->[1]<--[n] i w kolejnosci od najkrotszych do najdluzszych slow. Potem sobie z tym poradze, narazie musze wiedziec, dlaczego nie wypisuje tego co chce.
P-61266
RazzorFlame
» 2012-07-27 21:31:20
Po pierwsze NAJKRÓTSZE sie pisze a nie... Moze daj
break;
 w ifie ktory jest w najbardziej zagniezdzonej petli.
P-61271
matka5432
Temat założony przez niniejszego użytkownika
» 2012-07-27 21:59:59
Cholera jasna, a tak rzadko orty robie ;p zapamietam sobie ;p.
Zobacze z tym break'iem
P-61272
matka5432
Temat założony przez niniejszego użytkownika
» 2012-07-27 22:14:30
Roznie rozlozylem break'i ale nic(wyswietla pierwsze slowo z tekstu), jak do jutra z tym nic nie zrobie, to chyba bede zmuszony zmienic cala podstawe tego kodu, lub napisac go od nowa w inny sposob ;/
P-61273
SeaMonster131
» 2012-07-27 22:56:28
Jeżeli chcesz sortować słowa, no to możesz skorzystać z: » KursyAlgorytmy zbiór algorytmów - najłatwiejsze » Algorytmy » Sortowanie danychSortowanie bąbelkowe (ang. bubble sort) algorytm. Natomiast jeżeli chcesz znaleźć najkrótsze słowo, to masz zmienną w której przechowujesz dane słowo, i porównujesz jej długość z kolejnymi elementami tablicy:
C/C++
string tab[ 5 ] = { "abc", "ab", "a", "abcde", "abcd" };

string wynik = tab[ 0 ];

for( int i = 0; i < 5; i++ )
{
    if( wynik.length() > tab[ i ].length() )
         wynik = tab[ i ];
   
}

cout << wynik;
P-61275
matka5432
Temat założony przez niniejszego użytkownika
» 2012-07-27 23:54:22
...niezle to skrociles, nie wpadl bym na takie cos ;) na prawde sprytne ;D
wielkie dzieki ;)
P-61279
matka5432
Temat założony przez niniejszego użytkownika
Wyszukiwanie najkrótszego słowa w tekście - nadal coś jest nie tak
» 2012-07-28 16:30:01
Kurde... program z kursu nie dziala tak jak powinien. Jesli w tekscie znajda sie 2 slowa, ktora maja taka sama ilosc liter, to program  trochę źle działa, nie wiem dlaczego. Kilka razy go dokladnie przeanalizowalem,krok po kroku, tak jak komputer. Jak dla mnie program powinien dzialac tak, jak powinien ;] Algorytmy » Sortowanie danych ♦ Sortowanie bąbelkowe (ang. bubble sort)
Czy ktos wie co jest nie tak?
C/C++
#include <iostream>
using namespace std;
int main()
{
    cout << "ile slow chcesz wczytac? ";
    int size;
    cin >> size;
    string tab[ size ];
    int i = 0;
    do
    {
        cout << "element " << i + 1 << ": ";
        cin >> tab[ i ];
        i++;
    } while( i != size );
   
    i = 0;
    for( i = 0; i < size; i++ )
    {
        for( int j = 0; j < size - 1; j++ )
        {
            if( tab[ j ] > tab[ j + 1 ] )
                 swap( tab[ j ], tab[ j + 1 ] );
           
        }
    }
    i = 0;
    do
    {
        cout << tab[ i ] << endl;
        i++;
    } while( i != size );
   
    return 0;
}
P-61301
SeaMonster131
» 2012-07-28 17:03:15
Jesli w tekscie znajda sie 2 slowa, ktora maja taka sama ilosc liter, to program trochę źle działa
Co przez to rozumiesz? Bo u mnie program działa prawidłowo.
P-61302
« 1 » 2
  Strona 1 z 2 Następna strona