Potrzebuje pomocy w napisaniu kodu. Poniżej treść zadania.
Dane stanowią linie dowolnego tekstu, z których każdy zawiera słowa oddzielone spacjami (niekoniecznie pojedynczymi). Tekst może zawierać co najwyżej 40 linii po max. 80 znaków każda. Wynikiem programu powinny być linie tekstu poprzestawiane w/g malejącej średniej długości słowa w linii. Zastosować sortowanie metodą prostej zamiany przeprowadzone na wektorze indeksów.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Linia
{
char znaki [8]; // czy linia ma mieć maksymalną długość 7 znaków?
int dlugosc_slowa; // chyba chodzi o średnią długość słowa
};
struct Linie
{
struct Linia linie [4]; // czy linii ma być maksymalnie 4?
int liczba_lini;
};
void wczytywanieWszystkichLini (struct Linie *linie);
void wczytajLinie (struct Linia *linia);
void sortowanieLini (struct Linie *linie);
int main()
{
struct Linie linie;
wczytywanieWszystkichLini(&linie); // ta funkcja ma wczytać wszystkie linie
// tu powinien Pan posortować linie - wywołując sortowanieLinii
// tu powinien Pan wyświetlić linie - wywołując wyswietWszystkieLinie funkcję tą trzeba napisać
}
void wczytywanieWszystkichLini(struct Linie *linie)
{
printf("Wczytywanie wszystkich lini\n");
printf("Podaj liczbe lini: ");
scanf("%d", &(linie->liczba_lini) );
for( int i=0 ; i < linie->liczba_lini; i++)
wczytajLinie (&(linie->linie[i])) ;
}
void wczytajLinie (struct Linia *linia)
{
printf("Wczytywanie lini\n");
scanf("%s", (linia->znaki) );
// tu należy obliczyć średnią długość słowa w linii
}
void sortowanieLini(struct Linie *linie)
{
int min_idx;
for (int i = 0; i < linie->liczba_lini-1; i++)
{
min_idx = i;
for (int j = i+1; j < linie->liczba_lini; j++)
if (linie->linie[j].dlugosc_slowa < linie->linie[min_idx].dlugosc_slowa)
min_idx = j;
// czy na pewno zawsze trzeba wykonać zamianę elementów?
int temp = min_idx;
min_idx = i;
i = temp;
}
}