• 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,324 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 313 wizyt
pytanie zadane 21 lutego 2018 w Inne języki przez Azghak Nowicjusz (120 p.)
0 głosów
1 odpowiedź 199 wizyt
pytanie zadane 13 kwietnia 2016 w PHP przez yaro Początkujący (340 p.)
0 głosów
0 odpowiedzi 167 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...