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

[c++] Przeszukawanie tablicy struktur

Ostatnio zmodyfikowano 2014-01-18 22:26
Autor Wiadomość
Asalas77
Temat założony przez niniejszego użytkownika
[c++] Przeszukawanie tablicy struktur
» 2014-01-18 14:50:55
Mam taki kod, powinien on pobrać dane kilku książek z klawiatury i potem poszukać tych które kosztuja <10zł i je wyswietlic, ale coś nie działa i pokazuje tylko coś takiego: (czasem kilka razy)

Tytul:
Autor:
Index: 0
Cena: 0

C/C++
#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;


struct T_ksiazka
{
    char tytul[ 30 ];
    char autor[ 30 ];
    int index;
    float cena;
} baza[ 100 ];

void wprowadz( T_ksiazka K )
{
    cout << "Tytul: "; cin.getline( K.tytul, 30 );
    cout << "Autor: "; cin.getline( K.autor, 30 );
    cout << "Index: "; cin >> K.index;
    cout << "Cena: "; cin >> K.cena;
}

void szukaj( T_ksiazka K )
{
    if( K.cena < 10.0 )
    {
        cout << "Tytul: " << K.tytul << endl;
        cout << "Autor: " << K.autor << endl;
        cout << "Index: " << K.index << endl;
        cout << "Cena: " << K.cena << endl;
    }
}

int main()
{
    int i = 0, j = 0;
    char koniec = 0;
    do
    {
        wprowadz( baza[ i ] ); i++;
        cout << endl << endl << "Koniec?";
        cin.ignore();
        koniec = getch();
        cout << endl;
    }
    while( koniec != 't' && koniec != 'T' );
   
    cout << endl;
   
    do
    {
        szukaj( baza[ j ] ); j++;
        cout << endl;
    }
    while( j < i );
   
    system( "pause" );
}
P-102442
leon_w
» 2014-01-18 15:50:11
Słabo jeszcze ogarniam struktury, ale wydaje mi się że:
Deklarujesz 100 elementową tablicę typu T_książka, po czym dane zapisujesz zisujesz zupełnie gdzie indziej.
Całej tablicy nie prześlesz do innej funkcji, tylko jej adres.
Wydaje mi się że powinno to wyglądać tak:
C/C++
#include <iostream>
#include <cstdlib>
#include <conio.h>

using namespace std;


struct T_ksiazka
{
    char tytul[ 30 ];
    char autor[ 30 ];
    int index;
    float cena;
} baza[ 100 ];

void wprowadz( T_ksiazka K[], int ile )
{
    cout << "Tytul: "; cin.getline( K[ ile ].tytul, 30 );
    cout << "Autor: "; cin.getline( K[ ile ].autor, 30 );
    cout << "Index: "; cin >> K[ ile ].index;
    cout << "Cena: "; cin >> K[ ile ].cena;
}

void szukaj( T_ksiazka K[], int ile )
{
    if( K[ ile ].cena < 10.0 )
    {
        cout << "Tytul: " << K[ ile ].tytul << endl;
        cout << "Autor: " << K[ ile ].autor << endl;
        cout << "Index: " << K[ ile ].index << endl;
        cout << "Cena: " << K[ ile ].cena << endl;
    }
}

int main()
{
    int i = 0, j = 0;
    char koniec = 0;
    do
    {
        wprowadz( baza, i ); i++;
        cout << endl << endl << "Koniec?";
        cin.ignore();
        koniec = getch();
        cout << endl;
    }
    while( koniec != 't' && koniec != 'T' );
   
    cout << endl;
   
    do
    {
        szukaj( baza, j ); j++;
        cout << endl;
    }
    while( j < i );
   
    system( "pause" );
}
}
P-102450
Asalas77
Temat założony przez niniejszego użytkownika
» 2014-01-18 16:35:22
na wykladzie mi wlasnie wykladowca pokazywal ze mozna pisac w funkcji tylko typ i nazwe tablicy, a number elementu tej tablicy tylko w wywolaniu funkcji ale nie pamietam jak to dokladnie pisał i juz nie umiem powtorzyc tego u siebie. To co napisales dziala, ale wlasnie chcialem tym drugim sposobem zrobic.
P-102454
pekfos
» 2014-01-18 22:26:31
C/C++
void wprowadz( T_ksiazka K )
{
    cout << "Tytul: "; cin.getline( K.tytul, 30 );
    cout << "Autor: "; cin.getline( K.autor, 30 );
    cout << "Index: "; cin >> K.index;
    cout << "Cena: "; cin >> K.cena;
}
Przekazuj przez referencję.
P-102498
« 1 »
  Strona 1 z 1