Cześć wszystkim. Widziałem podobny temat ale ja postaram się go bardziej rozbudować..
Zadanie brzmi: Dane stanowią linie dowolnego tekstu, z których każdy wiersz zawiera słowa oddzielone spacjami (niekoniecznie pojedynczymi). Tekst może zawierać co najwyżej 40 lini po max 80 znaków każda. Wynikiem programu powinny być linie dowolnego tekstu przedstawione wg. malejącej średniej długości słowa w linii.
Program wydaje się być łatwy do zrobienia ale dla początkującego sprawia trochę problem.
Oto mój rezultat:
#include <iostream>
#include <string>
using namespace std;
struct wiersze {
string wiersz[40];
int dlugosc[80];
};
int main()
{
wiersze tekst;
wiersze Dlugosc;
int ile;
cout << "Wprowadz liczbe wierszy: ";
cin >> ile;
if (ile <= 40) {
cin.ignore();
//wprowadzamy tekst do tablicy
for (int i = 0; i < ile; i++) {
cout << "Wpisz " << i + 1 << " tekst: ";
getline(cin, tekst.wiersz[i]);
};
//wypisujemy dane z tablicy (tu sprawdziłem czy poprawnie się wczytało- pętla niepotrzebna)
for (int i = 0; i < ile; i++) {
cout << tekst.wiersz[i] << endl;
}
//liczymy długość znaków
for (int i = 0; i < ile; i++) {
Dlugosc.dlugosc[i] = tekst.wiersz[i].length();
}
//wypisz ile każdy wiersz posiada ile znaków (ta pętla też niepotrzebna)
for (int i = 0; i < ile; i++) {
cout << "Wiersz " << i + 1 << " posiada " << Dlugosc.dlugosc[i] << " znakow." << endl;
}
}
else {
cout << "Wprowadzono za duza liczbe!!";
}
return 0;
}
No dobra.. Mój pomysł na zrobienie tego programu to:
- Wprowadź ile chcesz linii
- Jeśli przekracza to wywal błąd i zakończ program
- Jeśli nie, to za pomocą pętli wsadź każdą linię do tablicy ( tu chciałbym wywołać funkcję ale nie wiem jak to poprawnie zrobić)
- Policz długość znaków i przypisz do każdej linii (tu też funkcja)
- Posortuj wg. długości (funkcja)
- Wyświetl według poprawnej kolejności (funkcja)
Nie mam w ogóle pojęcia jak zliczyć tą średnią każdego słowa, jak przypisać długość do tablicy, nawet nie wiem czy to co ja napisałem jest poprawne i czy idę w dobrym kierunku...
Chciałbym uzyskać od was jak najwięcej porad odnośnie zrobienia tych etapów i prosiłbym was abyście nie kazali mi się doszukiwać gdzie indziej tylko tak konkretnie powiedzieć co w jaki sposób, bo mam strasznie mało czasu :/