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

Problem z "listą" C++

Ostatnio zmodyfikowano 2009-05-04 19:59
Autor Wiadomość
driver1995
Temat założony przez niniejszego użytkownika
Problem z "listą" C++
» 2009-03-16 22:56:06
Witam...
Jestem tu nowy i skusiłem, się do przeczytania (i nauczenia się) kursu C++... Doszedłem do XX rozdziału, no i tak mnie naszło, żeby zrobić coś tak jakby na podsumowanie... Wszystko spoko i nagleee... Problem tkwi w tym, że nie wiem, jak zrobić, żeby była lista i na niej pozycja XXXX, YYYY, ZZZZ itp., żeby zaczynało się to od 4 wiersza, żeby pomiędzy nimi był odstęp jeden wiersz, oraz żeby można je było wybierać, żeby się zaznaczały... Na początku próbowałem kombinować tak jak jest w XIX rozdziale, z tym for(int i=0;i<X;i++) tylko potem nie udawało mi się wpisać czegoś, żeby nie było numerka... Może to zły tok myślenia... Bardzo bym prosił o wytłumaczenie tego......
Pozdro.;)

PS. To tylko jeden, bo dopiero ten program "podsumowujący" 20 rozdziałów zacząłem, ale znając siebie, to będzie tych problemów więcej, także bd pisał o nich w tym temacie... No, chyba, że nie będzie;)
P-4772
DejaVu
» 2009-03-16 23:09:57
Wydaje mi się że opis jest trochę chaotyczny... niewiele raczej z niego zrozumiałem. A jeśli coś zrozumiałem to wygląda to tak:

1. chcesz zrobić listę (ile elementów ma się wyświetlać?)
2. chcesz wyświetlać listę od 4'tego elementu
3. próbowałeś użyć do tego pętli for (ale coś Ci nie wyszło - nie wiem co)
4. dane które chcesz wyświetlić masz w tablicy (chyba)

C/C++
int iloscDanych = 20;
std::string tablica[ 555 ];
int pozycja = 3; //indeksowanie leci od zera, więc 3 to czwarta pozycja
int koniec = pozycja + 10; //10 chcemy wyświetlać
if( koniec > iloscDanych )
{
    koniec = iloscDanych; //zabezpieczenie, żeby nie wyświetlać elementów które nie są wczytane
} //if
for( int i = pozycja; i < koniec; i++ )
{
    cout << tablica[ i ] << endl;
} //for

O to chodzi?
P-4773
driver1995
Temat założony przez niniejszego użytkownika
» 2009-03-17 16:01:43
O... No coś w tym stylu, dzięki, z tym, żeby to jeszcze można zaznaczać, każdą pozycję oddzielnie...
P-4779
DejaVu
» 2009-03-17 16:03:25
Nie rozumiem :)
P-4780
driver1995
Temat założony przez niniejszego użytkownika
» 2009-03-17 16:10:10
No dobra... Powiedzmy mój program ma wyglądać tak:

                     NazwaProgramu(to mam)

XXXX

YYYY

ZZZZ
 
                    [esc]wyjście(to też mam)

I żeby przy pomocy strzałek, przeskakiwać z XXXX na YYYY i na ZZZZ... Bo próbowałem zrobić coś w stylu jak jest w rozdziale XIX tylko mi zamiast jednego zaznaczają wszystkie pozycje;/;/;/
P-4781
DejaVu
» 2009-03-17 16:21:46
C/C++
int zaznaczony = 5;
for(...)
{
    if( i == zaznaczony )
    {
        ustawKolor( 123 );
    } else
    {
        ustawKolor( 456 );
    } //else
   
    //reszta pętli for
   
} //for
P-4782
driver1995
Temat założony przez niniejszego użytkownika
» 2009-03-17 16:35:26
Ja chyba jestem jakiś ciemny...

C/C++
void listaM( int zaznaczM )
{
    int iloscDanych = 20;
    std::string tablica[ 1000 ];
    int pozycja = 3; //indeksowanie leci od zera, więc 3 to czwarta pozycja
    int koniec = pozycja + 10; //10 chcemy wyświetlać
    if( koniec > iloscDanych )
    {
        koniec = iloscDanych; //zabezpieczenie, żeby nie wyświetlać elementów które nie są wczytane
    } //if
    for( int i = pozycja; i < koniec; i++ )
    {
        if( i == zaznaczM )
        {
            textcolor( 0 );
            textbackground( 2 );
        } else
        {
            textcolor( 2 );
            textbackground( 0 );
        } //else
       
        cout << tablica[ i ] << "XXXX" << endl;
        cout << tablica[ i ] << "YYYY" << endl;
       
    } //for
    return;
}
No i się zaznacza na raz oba... Co jest źle.. Tzn. ja wiem co jest źle tylko jak to zrobić, żeby było dobrze???

EDIT:

C/C++
void listaM( int zaznaczM )
{
    string tablica[ 666 ];
    for( int i = 4; i <= 4; i++ )
    {
        if( i == zaznaczM )
        {
            textcolor( 0 );
            textbackground( 2 );
        } else
        {
            textcolor( 2 );
            textbackground( 0 );
        } //else
        gotoxy( 1, i );
        cout << tablica[ i ] << "XXXX" << endl;
    }
    for( int j = 5; j <= 5; j++ )
    {
        if( j == zaznaczM )
        {
            textcolor( 0 );
            textbackground( 2 );
        } else
        {
            textcolor( 2 );
            textbackground( 0 );
        } //else
        gotoxy( 1, 6 );
        cout << tablica[ j ] << "YYYY" << endl;
    }
    return;
}

Trochę pokombinowałem i to mi wyszło... Jest tak jak chce tylko (na przyszłość) jakbym robił liste np na 100 pozycji to przecież nie będę tak każdą literkę oddzielnie oznaczał(chyba, że będzie to konieczne.).. I w związku z tym: czy nie da się zrobić to samo tylko prościej?
P-4784
DejaVu
» 2009-03-17 17:21:38
Wniosek jest prosty - nie wiesz co to są tablice, do czego służą i jak je wykorzystywać. Poczytaj odpowiednią lekcję kursu :)
P-4786
« 1 » 2
  Strona 1 z 2 Następna strona