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