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

[C++] Łączenie struktur + wyszukiwanie

Ostatnio zmodyfikowano 2012-03-27 20:24
Autor Wiadomość
sensey9
Temat założony przez niniejszego użytkownika
[C++] Łączenie struktur + wyszukiwanie
» 2012-03-22 23:10:12
Witam. Zakładam ten temat gdyż nie mogę poradzić sobie z pewnym problemem, a mianowicie mam do napisania program  w którym są takie opcje:
1. Dodaj przedmiot do magazynu (tutaj użytkownik podaje przedmiot w raz z datą dodania)
2. Usuń przedmiot z magazynu (tutaj użytkownik usuwa przedmiot z magazynu i podaje datę jego uśnięcia)
3. Wyszukaj przedmiot( użytkownik podaje nazwę przedmiotu który chce wyszukać program wyświetla kiedy został dodany i jeśli został usunięty to dodatkowo wyświetla datę usunięcia)

Tutaj kod dodawania do magazynu:
C/C++
#include <iostream>
#include <string>
#include "magazyn_biblioteka.h"

using namespace std;
moja wprowadzanie[ 20 ];
int licznik;
void magazyn_wprowadzanie()
{
   
    cout << "Podaj dzien wprowadzenia" << endl;
    cin >> wprowadzanie[ licznik ].dzien;
    cout << "Podaj miesiac wprowadzenia" << endl;
    cin >> wprowadzanie[ licznik ].miesiac;
    cout << "Podaj rok wprowadzenia" << endl;
    cin >> wprowadzanie[ licznik ].rok;
    cout << "Podaj nazwe przedmiotu" << endl;
    cin.get();
    getline( cin, wprowadzanie[ licznik ].przedmiot ); // wypełnianie obiektu wartościami dla poszczególnych typów danych
    licznik++;
}

Tutaj kod usuwania z magazynu:

C/C++
#include <iostream>
#include <string>
#include "magazyn_biblioteka.h"

using namespace std;
moja odbieranie[ 20 ];
int licznik_odbieranie;
void magazyn_odbieranie()
{
   
    cout << "Podaj dzien wprowadzenia" << endl;
    cin >> odbieranie[ licznik_odbieranie ].dzien;
    cout << "Podaj miesiac wprowadzenia" << endl;
    cin >> odbieranie[ licznik_odbieranie ].miesiac;
    cout << "Podaj rok wprowadzenia" << endl;
    cin >> odbieranie[ licznik_odbieranie ].rok;
    cout << "Podaj nazwe przedmiotu" << endl;
    cin.get();
    getline( cin, odbieranie[ licznik_odbieranie ].przedmiot ); // wypełnianie obiektu wartościami dla poszczególnych typów danych
    if( wprowadzanie[ licznik ].przedmiot == odbieranie[ licznik_odbieranie ].przedmiot )
    {
        licznik_odbieranie = licznik;
    }
   
   
}

a tutaj biblioteka ze strukturą:

C/C++
struct moja
{
    /
    std::string przedmiot;
    int dzien;
    int miesiac;
    int rok;
};

Program jest połączony za pomocą biblioteki i słów kluczowych extern. Dodawanie i usuwanie jak na razie działa poprawnie natomiast problem pojawia się przy wyszukaniu gdyż kompletnie nie wiem jak zrobić aby po podaniu słowa wyświetliła się jednocześnie data dodania i usunięcia. Proszę o pomoc
P-53109
SeaMonster131
» 2012-03-23 14:31:13
Masz tylko 1 datę (dzień, miesiąc rok) jako dodanie i tą samą datę jako usunięcie. Zrób takie 2 daty (dzień dodania, dzień usunięcia, miesiąc dodania, miesiąc usunięcia, rok dodania, rok usunięcia).
P-53118
jankowalski25
» 2012-03-23 21:16:43
Datę możesz pobierać z systemu. Wtedy użytkownik nie musiałby jej wprowadzać. Możesz do tego wykorzystać » standard Cctime
P-53124
sensey9
Temat założony przez niniejszego użytkownika
» 2012-03-25 20:00:29
Data to nie problem. Najbardziej chodzi mi o wyszukanie gdyż nie wiem jak sobie poradzić.
P-53201
SeaMonster131
» 2012-03-25 20:04:23
Użytkownik wpisuje nazwe jaką chce wyszukać, wpisana nazwa musi się równa temu stringowi "przedmiot" w Twojej strukturze.
P-53202
sensey9
Temat założony przez niniejszego użytkownika
» 2012-03-25 20:59:04
To to ja wiem próbowałem w taki sposób ale nie wyświetla mi daty odebrania z magazynu takiej jak trzeba
P-53215
SeaMonster131
» 2012-03-25 21:09:55
To pokaż kod.
P-53216
sensey9
Temat założony przez niniejszego użytkownika
» 2012-03-25 22:28:32
Próbowałem kombinować w tym kierunku lecz bez skutku

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

using namespace std;
void magazyn_wyszukanie()
{
    string szukana;
    cout << "podaj szukane slowo" << endl;
    getline( cin, szukana );
   
    do {
        cout << "Wcisnij 0 aby wyjsc" << endl;
        cout << "Podaj szukana nazwe" << endl;
        cin >> szukana;
        system( "cls" );
       
       
        if( wprowadzanie[ licznik ].przedmiot.find( szukana ) <= wprowadzanie[ licznik ].przedmiot.length() ) // funkcja find - sprawdza czy w tablicy sa zawarte szukane znaki jezeli sa to zwraca pozycje pasujacej litery
        // jezeli nie to zwraca smieci (ogromna liczba) lenght - zwraca dlugosc elementow tablicy
        {
            cout << licznik + 1 << wprowadzanie[ licznik ].przedmiot << wprowadzanie[ licznik ].dzien
            << wprowadzanie[ licznik ].miesiac << wprowadzanie[ licznik ].rok << endl;
        }
       
        cout << "Wcisnij 0 aby wyjsc" << endl;
        cout << "Podaj szukana nazwe" << endl;
        cin >> szukana;
       
        for( int licznik = 0, licznik_odbieranie = 0; licznik < zawartosc_magazynu, licznik_odbieranie < licznik < zawartosc_magazynu; licznik++, zawartosc_magazynu++ ) // przeszukuje kazdy element tabelicy
        {
            if(( wprowadzanie[ licznik ].przedmiot == szukana ) && wprowadzanie[ licznik_odbieranie ].przedmiot == szukana ) // funkcja find - sprawdza czy w tablicy sa zawarte szukane znaki jezeli sa to zwraca pozycje pasujacej litery
            // jezeli nie to zwraca smieci (ogromna liczba) lenght - zwraca dlugosc elementow tablicy
            {
                cout << wprowadzanie[ licznik ].przedmiot << "wprowadzone: "
                << wprowadzanie[ licznik ].dzien << "-" << wprowadzanie[ licznik ].miesiac << "-" << wprowadzanie[ licznik ].rok << endl;
                cout << "wydane: "
                << odbieranie[ licznik < zawartosc_magazynu ].dzien << "-" << odbieranie[ licznik < zawartosc_magazynu ].miesiac << "-" << odbieranie[ licznik < zawartosc_magazynu ].rok << endl;
            }
        }
       
    } while( szukana != "0" );
   
}
P-53217
« 1 » 2
  Strona 1 z 2 Następna strona