Pomoc-Program na zaliczenie

0

Witajcie chłopaki. Jestem uczennicą technikum i musze oddac na zaliczenie pewien program, za który nie wiem jak mam się zabrac.

Mam napisac program który będzie losował do tablicy 1000 słów o długości od 5 do 15. Następnie ma on wypisac wylosowane słowa, później posortowac i wypisac posortowane. Następnie mam zrobic procedure, w której będę podawała dowolne słowo a program bedzie szukał we wczesniej wylosowanych i posortowanych słowach.Jeżeli natrafi na takie samo słowo to wypisze je, a jeżeli to nie to wypisze dwa słowa które są najbliższe temu które podałam. Tablicę i losowanie potrafię zrobic sama ale nie wiem jak posortowac i jak zrobic tą procedure. Chlopaki proszę pomóżcie. Będę wdzięczna:)

2

Chciałaś to napisać w dziale Praca.

0

Niekoniecznie. Może tylko prosi o pomoc, nakierowanie jak rozwiązać problem sortowania i wyszukiwania, a nie oczekuje gotowca?

Co do tematu: C czy C++?

ALgorytmów sortowania jest wiele, łatwo je znaleźć. Jeżeli nie chcesz gotowca (bo o niego to pytaj w dziale "Praca"), to konkretniejsze pytania zadaj. Spróbuj sama znaleźć algorytm sortowania, co ma porównywać itp. Jak juz uporamy sie z sortowaniem to wyszukiwanie będzie banalne :)

0

To podajcie mi chociaz link do jakiś materiałów gdzie będzie jak deklarowac tablice, jak sortowac, jak losowac do tablicy bo jestem zielona...

1

Kontener na słowa -> http://cplusplus.com/reference/stl/vector/
Algorytm sortowania -> http://cplusplus.com/reference/algorithm/sort/

A te słowa maja mieć jakieś znacznie? Czy tylko musza się składać z a - z?

0

Tablicę wskaźników na C stringi można posortować tak:

void xsort( char * t[], int N) {
	for( i=1; i<N; i++ ) {
		int p=0, k = i-1;
		char * x = t[i];
		while( p <= k ) {
			int c = ( p+k )/2;
			int z = strcmp( x,  t[c] );
			if( z > 0 ) p = c + 1;
			else if( z < 0 ) k = c - 1;
			else { p = c; break; } }
		for( k = i; k > p; k-- )
			t[k]=t[k-1];
		t[p] = x; } } 

Ciekawy koszt, trzy razy dłuższe i trzy razy szybsze od kwadratowego bąbelka.
Nazywa się to jakoś?

0

Proszę:

#include <iostream>
#include <string>
#include <algorithm>
const int MAX_TAB=1000;
std::string tab[MAX_TAB];
inline void PROCEED(std::string);
int main ()
{
	int iLenght;
	srand(time(NULL));
	std::cout << "WYLOSOWANE:";
	for(int i=0; i<MAX_TAB; i++)
	{
		iLenght=rand()%11+5;
		while(iLenght--)
			tab[i]+=rand()%26+97;
		std::cout << tab[i] << "\n";
	}
	std::sort(tab, tab+MAX_TAB);
	std::cout << "POSORTOWANE:" << "\n";
	for(int i=0; i<MAX_TAB; i++)
		std::cout << tab[i] << "\n";
	std::cout << "WPROWADZ SLOWA DO WYSZUKANIA, ZAKONCZ ZNAKIEM '*'\n";
	std::string temp;
	while (std::cin >> temp && temp!="*")
		PROCEED(temp);
}
inline void PROCEED(std::string word)
{
	if(std::binary_search(tab, tab+MAX_TAB, word))
		std::cout << word << "\n";
	else
	{
		std::string *it=std::upper_bound(tab, tab+MAX_TAB, word);
		if(it!=tab && it!=tab+MAX_TAB)
			std::cout << *(it-1) << "\n" << *it << "\n";
		else if(it!=tab+MAX_TAB)
			std::cout << "NIE ISTNIEJE MNIEJSZA WARTOSC\n" << *it << "\n";
		else
			std::cout << *(it-1) << "\nNIE ISTNIEJE WIEKSZA WARTOSC\n";
	}
}

Byłbym wdzięczny, gdyby ktoś to sprawdził.

1

Ty mi dupci, bo wiesz, też potrzebuję :D A ja Ci za to kodzik? :D

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