Strukturalny typ danych

0

Zadeklaruj strukturalny typ danych, który będzie zawierał dwa pola: napis oraz liczba całkowita. W funkcji main zadeklaruj lokalną tablicę o niewielkiej długości (np. 5), zawierającą elementy typu takiego, jak zdefiniowana wcześniej struktura.

Następnie napisz funkcję, która jako argument wywołania przyjmuje tę tablicę. Kod funkcji sprawdza, czy w każdej z komórek tablicy pole liczbowe nie zawiera wartości mniejszej (ale dodatniej) od długości napisu przechowywanego w drugim polu. Jeżeli tak, skraca napis do długości takiej, jak wartość w polu liczbowym. W przeciwnym przypadku pozostawia napis niezmieniony. Takie sprawdzenie i skracanie wykonuje się dla wszystkich komórek tablicy. Po przejrzeniu całej tablicy funkcja zwraca liczbę skróceń, jakie rzeczywiście zostały wykonane.

Napisz w funkcji main kod, który pozwala użytkownikowi wprowadzić wartości do obydwu pól w każdej z komórek tej tablicy. W main, poniżej kodu wprowadzającego dane umieść wywołanie funkcji skracającej napisy w tablicy, przy czym argumentem wywołania jest tablica, do której dane zostały właśnie przez użytkownika wprowadzone. Na koniec dopisz kod wyświetlający nową zawartość tablicy (w kolejnych wierszach pary: liczba i napis) oraz zwróconą przez funkcję liczbę faktycznie wykonanych skróceń.

Co tu jest nie tak że nie moge skompilować? O.o

#include <iostream>
#include <string>
#include <cstdio>

using namespace std;



struct struktura 
{
	string napis;
	int liczba_calkowita;
};

int main()
{
	struktura tab[5];
	cout << "Wprowadz dane: " << endl;
	for(int i=0; i<5; i++)
	{
		cout << "Podaj napis" << endl;
		cin.sync();
		cin >> tab[i].napis;
		cout << "Podaj liczbe calkowita: "<< endl;
		cin.sync();
		cin >> tab[i].liczba_calkowita;
	}
	int k=skracanie(tab);

	cout << "Nowa zawartosc tablicy" <<endl;
	for(int i=0; i<5; i++)
	{
		cout << tab[i].liczba_calkowita << " ";
		cout << tab[i].napis;
		cout << endl;
	}


int skracanie( struktura tab[])
{
	int ilosc_skrocen=0;
	for(int i=0; i<5; i++)
	{
		if(tab[i].liczba_calkowita<tab[i].napis.size())
		{
			tab[i].napis.erase(tab[i].liczba_calkowita,tab[i].napis.size()-tab[i].liczba_calkowita);
			ilosc_skrocen++;
		}
	}
	return ilosc_skrocen;
}
	
	return 0;
} 
3

Zagnieździłeś definicje funkcji, mianowicie wewnątrz main() masz definicję funkcji skracanie(). Tego zrobic nie mozesz.
Brakuje też deklaracji funkcji skracanie(), czasem przeszkadza to kompilatorowi.

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