• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyszukiwanie informacji w bazie danych

VPS Starter Arubacloud
0 głosów
1,456 wizyt
pytanie zadane 14 stycznia 2017 w C i C++ przez Kamyyylo Początkujący (460 p.)

Mam takie polecenie: 

Napisz funkcję pozwalającą wyszukać w bazie elementy o zadanych parametrach
np. samochód marki FIAT, rocznik nie starszy niż 1990, o cenie z zadanego przedziału.

Udało mi się zrobić tyle: 

#include <iostream>
using namespace std;
struct auta
{
	char marka[10];
	int rocznik;
	int cena;
};
void wczytywanie(auta nspis, int n)
{

	cout << "Podaj marke,rocznik i cene pojazdu: " << endl;
	for (int i = 0; i < n; i++)
	{
		cout << "Podaj marke: " << endl; cin >> nspis[i].marka;
		cout << "Podaj rocznik: " << endl; cin >> nspis[i].rocznik;
		cout << "Podaj cene: " << endl; cin >> nspis[i].cena;
	}
}
int main()
{
    int n;
	cout << "Ile elementow ma miec tablica ?";
	cin >> n;
	auta spis[30];
	auta *nspis = new auta[n];
	wczytywanie(*nspis,n);
}

Jednak nie mam pomysłu jak mogę stworzyć wyszukiwarkę marek cen i roczników :< 

1 odpowiedź

0 głosów
odpowiedź 14 stycznia 2017 przez CzikaCarry Szeryf (75,340 p.)
wybrane 15 stycznia 2017 przez Kamyyylo
 
Najlepsza
Hmmm.. Z baz danych to do takich małych projektów polecam SqLite. Podsyłam tutorial: https://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm
komentarz 14 stycznia 2017 przez Kamyyylo Początkujący (460 p.)
Muszę zrobić to innym sposobem niż sqlite :<
komentarz 14 stycznia 2017 przez CzikaCarry Szeryf (75,340 p.)
Aha, a mogę wiedzieć dlaczego? Zakazano Ci, czy co? No ale ok, skoro tak, no to zrobimy tak: Baza danych składa się z tabel. Tabele składają się z kolumn, wierszy, i pojedynczych komórek. Po prostu zadeklaruj sobie tablicę 2-wymiarową, w której index pierwszy będzie kolumną, a drugi wierszem. W taki sposób otrzymujesz tabelę. Teraz wystarczy, że jeśli chcesz wybrać samochód jakiejś marki, to przeszukujesz kolumnę w poszukiwaniu stringa "fiat" poprzez iterowanie po całym indeksie. Mam nadzieje, że wytłumaczyłem to zrozumiale :D

Ogólnie tutaj sama koncepcja baz danych i tabel jest fajnie wytłumaczona: https://www.youtube.com/watch?v=99JAI24Zd24
komentarz 14 stycznia 2017 przez Kamyyylo Początkujący (460 p.)

Udało mi się zrobić coś takiego jednak program się nie kompiluje :<

#include <iostream>
using namespace std;
struct auta
{
	char marka[10];
	int rocznik;
	int cena;
};
void wczytywanie(auta nspis, int n)
{

	cout << "Podaj marke,rocznik i cene pojazdu: " << endl;
	for (int i = 0; i < n; i++)
	{
		cout << "Podaj marke: " << endl; cin >> nspis[i].marka;
		cout << "Podaj rocznik: " << endl; cin >> nspis[i].rocznik;
		cout << "Podaj cene: " << endl; cin >> nspis[i].cena;
	}
}
void wyszukiwanie(auta nspis, int n)
{
	char m;
	int l, min, max;
	cout << "Jakiej marki auta szukasz ? " <<endl;
	cin >> m;
	cout << "Z jakiego rocznika?" <<endl;
	cin >> l;
	cout << "W jakim przedziale cenowym ?" << endl;
	cout << "Cena minimalna: "; cin >> min;
	cout << "Cena maksymalna: "; cin >> max;
	for (int i = 0; i < n; i++)
	{
		if (nspis[i].marka == m && nspis[i].rocznik==l && nspis[i].cena > min &&  nspis[i].cena<max)
			cout << nspis[i].marka << ", " << nspis[i].rocznik << ", " << nspis[i].cena;
	}

}
int main()
{
    int n;
	cout << "Ile elementow ma miec tablica ?";
	cin >> n;
	auta spis[30];
	auta *nspis = new auta[n];
	wczytywanie(*nspis,n);
	wyszukiwanie(*nspis, n);
	system("pause");
	return 0;

}

 

komentarz 14 stycznia 2017 przez CzikaCarry Szeryf (75,340 p.)
Jaki błąd wyrzuca kompilator?
komentarz 14 stycznia 2017 przez 10kw10 Pasjonat (22,880 p.)

no match for 'operator[]' (operand types are 'auta' and 'int')

Zmienilem sposob przekazywania tablicy:

// funkcja
void wyszukiwanie(auta nspis[], int n);

//wywolanie
wyszukiwanie(nspis,n);

i jeszcze typ zmiennej marka na string

char m;
    int l, min, max;
    cout << "Jakiej marki auta szukasz ? " <<endl;
    cin >> m;

Jest jakas marka na jeden znak ? :D

komentarz 14 stycznia 2017 przez Kamyyylo Początkujący (460 p.)

dodalem conio.h, probowalem tez cstring ale nadal mi podkresla >> przy wczytywaniu m. 

Rzeczywiście nie ma marki na jedną literę haha

komentarz 15 stycznia 2017 przez 10kw10 Pasjonat (22,880 p.)
Wyglada dobrze. Mozesz spróbować uzyc getline

Podobne pytania

0 głosów
2 odpowiedzi 325 wizyt
pytanie zadane 21 lutego 2018 w Inne języki przez Azghak Nowicjusz (120 p.)
0 głosów
1 odpowiedź 221 wizyt
pytanie zadane 13 kwietnia 2016 w PHP przez yaro Początkujący (340 p.)
0 głosów
0 odpowiedzi 180 wizyt

92,773 zapytań

141,697 odpowiedzi

320,530 komentarzy

62,108 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...