• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Anagramy, matura, pomocy!

Object Storage Arubacloud
0 głosów
1,781 wizyt
pytanie zadane 18 maja 2015 w C i C++ przez MrLoyt Nowicjusz (120 p.)

Przygotowywuję się do matury z informatyki (nowa formuła, tylko poziom rozszerzony) i w ciągu ostatniego miesiąca kodowałem wszystkie zadania z poprzednich lat. Kiedy natknąłem się na zadanie z angramami. Robiłem najpierw surowy kod do sprawdzania czy wyrazy są anagramami, następnie próbowałem by sprawdzały czy wyrazy w pliku są anagramami i tutaj program świruje ponieważ przy pierwszych wyrazach nie-anagramach zatrzymuje się. Zamieszczam kod.

#include <fstream>
#include <iostream>
#include <string>

using namespace std;

bool anagram (string wyraz,string tekst)
{
	if (wyraz.size()!=tekst.size())
	return false;
	else
	{
		for (int i=0;i<wyraz.size()-1;i++)
		{
			for (int j=0;j<tekst.size()-1;j++)
			{
				if(wyraz[j]>wyraz[j+1])
					swap (wyraz[j],wyraz[j+1]);
					
				if(tekst[j]>tekst[j+1])
					swap (tekst[j],tekst[j+1]);
			}
		}	
	}
	
	return wyraz==tekst;
}

bool wczytaj(string nplik)
{
	ifstream plik;
	plik.open(nplik.c_str() );
	if( !plik.good() )
		return false;
		
	while (true)
	{
		string wyraz;
		string tekst;
		
		plik>>wyraz>>tekst;
		if (plik.good() )
			cout<<anagram(wyraz,tekst)<<endl;
		else
			break;
			
	}
	return true;
	
	plik.close();
}

int main()
{
	if (!wczytaj("D:/anagram.txt"))
	cout<<"nie udalo sie"<<endl;
	
	return 0;
}

Jestem załamany ponieważ tylko tego nie rozumiem do matury.

C++ uczyłem się samodzielnie z książek, kursów na YT i innych stronach. Szkoła uczyła tylko Pascala który wydawał mi się bardziej skomplikowany niż C++

3 odpowiedzi

0 głosów
odpowiedź 18 maja 2015 przez criss Mędrzec (172,590 p.)
edycja 18 maja 2015 przez criss
Widze, ze on ma robi cos wiecej niż tylko sprawdzać czy jest anagramem. Tylko nie bardzo rozumiem te ify w anagramie. Na jakiej zasadzie są porównywane chary?
0 głosów
odpowiedź 18 maja 2015 przez Freesher Użytkownik (500 p.)
Nie wiem na jakiej zasadzie porównujesz znaki.Jeśli możesz wyjaśnić to będzie łatwiej,ale z tego co widzę to nie masz wprowadzonego instrukcji else,która po wywołaniu funkcji wczytaj,odpala kolejną funkcje anagram.Z tego co dałem wychodzi na to,że twój kod jest w połowie zrobiony.
0 głosów
odpowiedź 18 maja 2015 przez Fulaphex Początkujący (470 p.)
Ja bym zaczal w tym zadaniu od czegos totalnie innego. Sprawdzasz czy slowa sa anagramami sortujac je oba i potem sprawdzajac, czy dostales taki sam wynik. Oprocz tego uzywasz do tego sortowania babelkowego, ktore jest najwolniejszym mozliwym sposobem sortowania. Twoja metoda ma zlozonosc kwadratowa, a zadanie to mozna rozwiazac liniowo. Pomysl opiera sie na tym, ze tworzysz sobie tablice dlugosci alfabetu i zliczasz sobie po kolei wystapienia kazdej z liter w obu slowach. Potem porownujesz tylko, czy kazda z liter wystapila taka sama liczbe razy. W taki sposob w czasie liniowym tworzysz te tablice a potem w stalym sprawdzasz, czy sa takie same. Jesli dalej nie wiesz jak to napisac, to daj znac, moge Ci podrzucic jakies wskazowki implementacyjne/gotowy kod.

Co do problemow z samym kodem, to niestety u mnie dziala on poprawnie, musisz tylko pamietac o zostawieniu pustej linii lub innego bialego znaku na koncu pliku.

Podobne pytania

0 głosów
3 odpowiedzi 1,677 wizyt
pytanie zadane 14 marca 2018 w C i C++ przez Nic_Nie_Wiem Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 478 wizyt
pytanie zadane 3 września 2017 w SPOJ przez chucksqll Stary wyjadacz (12,930 p.)
0 głosów
2 odpowiedzi 622 wizyt
pytanie zadane 26 czerwca 2015 w Offtop przez Anonim Mądrala (6,000 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...