Szukanie napisów w strukturze tablicy

Szukanie napisów w strukturze tablicy
DA
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 2 lata
  • Postów:7
0

Podaje cenę i markę do tablicy struktury. Jak wyliczyć średnia cenę dla danej marki. Próbowałem porównać funkcją strcmp,

Kopiuj
#include <iostream>
#include <string>
#include <iomanip>

using namespace std;
const int MAX_N = 10;
struct pojazdy {
	string marka;
	int cena;
};
void wczytaj_pojazdy(pojazdy p[],int liczba_pojazdow)
{
	for (int i = 0; i < liczba_pojazdow ; i++)
	{
		cout << "Podaj marke" << endl;
		cin >> p[i].marka;
		cout << "Podaj cene" << endl;
		cin >> p[i].cena;
	}
}
void wyswietl_pojazdy(pojazdy p[], int liczba_pojazdow)
{
	for (int i = 0; i < liczba_pojazdow; i++)
	{
		cout << setw(10) << p[i].marka;
			cout << setw(10) << p[i].cena;
	}

}
int srednia(pojazdy p[], int liczba_pojazdow)
{
	int licznik = 0;
	double suma = 0;
	for (int i = 0; i < liczba_pojazdow; i++)
	{
		if (strcmp(p[i].marka, marka) == 0)
			licznik++;
	}

}
int main()
{
	pojazdy p[MAX_N];
	int liczba_pojazdow;
	cin >> liczba_pojazdow;
	wczytaj_pojazdy(p, liczba_pojazdow);
	wyswietl_pojazdy(p, liczba_pojazdow);

}


lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4930
1

Co to za, marka tam?:

Kopiuj
shit.cpp: In function ‘int srednia(pojazdy*, int)’:
shit.cpp:36:40: error: ‘marka’ was not declared in this scope
   36 |                 if (strcmp(p[i].marka, marka) == 0)

DA
  • Rejestracja:ponad 2 lata
  • Ostatnio:około 2 lata
  • Postów:7
0

if (strcmp(p[i].marka, marka) == 0
chcialem tak porownac stringi ale to dziala dla char chyba

RE
  • Rejestracja:prawie 3 lata
  • Ostatnio:ponad 2 lata
  • Postów:41
3

nie dość że funkcja typu "int srednia" to jeszcze nic nie zwracasz, przykład poniżej jak mogłoby to wyglądać

Kopiuj
#include <iostream>
#include <vector>
#include <iomanip>
#include <cmath>

using namespace std;

struct vehicle {
	string brand;
	double price;
};

void show_me(const vector<vehicle> & item)
{
    if (item.empty()){cout << "\t\t\tthe base is empty := " << item.size() << "\n";}
    else
    {
        cout << "\t\t\tindex := " << item.size() << "\n";
        cout << "\n";
        for(const auto & el : item)
        {
            cout << right << setw(16) << el.brand << " " << right << setw(30)
            << right << setw(8) << setfill(' ')
            << setprecision(2) << fixed << el.price << ".zl" << "\n";
        }
    }
}

double average(const vector<vehicle> & item, const std::string & name)
{
	double sum{0};
	int counter{0};
    for(const auto & el : item)
    {
        if(el.brand == name)
        {
            sum += el.price;
            ++counter;
        }
    }
	return abs(sum/counter);

}
int main()
{
    vector<vehicle> item = {
        {"bolid", 60.21},
        {"automobil", 45.09},
        {"kareta", 47.10},
        {"kareta", 40.10},
        {"bolid", 88.00},
        {"bolid", 74.00}
    };

    show_me(item);
    double medium = average(item,"bolid");
    cout<<"\nfind \"bolid\" average := "<< medium << "\n";

    return 0;
}



edytowany 5x, ostatnio: reich
Zobacz pozostały 1 komentarz
kq
Przyjmowanie vectora przez kopię boli
WY
Wypierdzistyy
A właśnie reich czemu nie dajesz referencji przy przekazywaniu obiektu w takim przypadku, w pętli for używasz poprawnie referencji bo gdybyś nie użył też by się obiekty kopiowały niepotrzebnie, C++ z tego słynie, że można i kopiować obiekt, dawać do niego referencję, albo dawać do niego własność. Akurat to jest błahy przykład powinieneś, to zrobić poprawnie, ewentualnie udzielić wskazówek początkującemu.
RE
poprawione
JV
przydałby się jeszcze const dla vectora.
RE
dodano, faktycznie funkcja tylko wyświetla

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.