Szukanie napisów w strukturze tablicy

0

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

#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);

}


1

Co to za, marka tam?:

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)
0

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

3

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

#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;
}



1 użytkowników online, w tym zalogowanych: 0, gości: 1