szirot Temat założony przez niniejszego użytkownika |
wczytywanie słów do tablicy » 2014-01-09 18:27:12 treść zad. Zadanie Spamer
Administratorzy pewnego forum podejrzewają, że jeden z użytkowników jest złośliwym spamerem. Postanowili to sprawdzić, zliczając, ile razy w ustalonym okresie czasu wypowiedział się na forum. Pomóż im w tym zadaniu.
Wejście
W pierwszej linii wejścia znajduje się liczba całkowita n (1<=n<=100), określająca liczbę postów, które pojawiły się na forum w czasie obserwacji. W kolejnych n liniach znajdują się loginy autorów poszczególnych postów. Każdy login jest napisem składającym się z co najmniej jednego i co najwyżej 20 znaków, a ponadto może zawierać wyłącznie małe i duże litery alfabetu angielskiego oraz cyfry. W ostatniej linii znajduje się login użytkownika podejrzanego o bycie spamerem.
Wyjście
Wypisz liczbę zaobserwowanych postów podejrzanego użytkownika.
Przykład
Wejście:
5 user1 aaa aaa student808 x aaa
Wyjście:
2
Moj pomysl wyglada tak ze chce stworzyc tablica ktora przechowuje wczytane slowa a nastepnie porywnywac je z pokolei z szukanym i dodawac o wartosc 1 inna zmienna jesli by sie powtorzyla. uzywajac w petli string d; cin >> d; wycztuja sie pojedyczne litery, a chcialym zeby to byly cale wyrazy. Dlatego mam pytanie czy da sie to zapisac tak jak chcialbym wg mojego pomyslu czy trzeba to wgl inna metoda zrobic jesli tak to jaka ? Z gory dziekuje za pomoc |
|
00Andre |
» 2014-01-09 18:42:04 Jeśli chcesz całą linią wyczytać i enterem zakończyć to użyj funkcji getline #include <iostream> #include <string>
using namespace std;
int main() { string wyraz; cout << "Podaj wyraz : "; getline( cin, wyraz ); return 0; }
|
|
szirot Temat założony przez niniejszego użytkownika |
» 2014-01-09 19:06:00 stworzylem takie cos ale nie dziala jak powinno #include <iostream> #include <string> using namespace std;
int main() { int n; cin >> n; int wynik=0;
for (int i =0;i<=n;i++) { string r; getline(cin, r);
string f; cin >> f;
if(r==f){ wynik++;
}
cout << wynik;
return 0; }
wiem gdzie jest blad, mianowicie w string f, gdyz wczytuje to tylko jedna litere a nie tekst , ale kiedy zrobie to metoda getline wtedy petla caly czas trwa po wpisaniu danych, a jesli zamkne petle for to nie czyta mi r. Pewnie jakos latwo jedna linijka kodu da sie to zrobic dobrze ale jestem poczatkujacy i nie moge nic wymyslec. prosze o pomoc |
|
00Andre |
» 2014-01-09 19:17:23 #include <iostream> #include <string>
using namespace std;
int main() { int n; cout << "Podaj : "; cin >> n; cin.ignore(); cout << endl; int wynik = 0; for( int i = 0; i <= n; i++ ) { string f, g; cout << "Podaj : "; getline( cin, f ); cout << "\nPodaj : "; getline( cin, g ); if( f == g ) { ++wynik; break; } } cout << wynik; return 0; }
Twój problem był, że przy warunku if ( f == g) gdy jest prawda nie dałeś break, czyli nie zatrzymałeś pętli. Tutaj masz trochę ten kod ogarnięty i wszystko fajnie dobrze działa |
|
szirot Temat założony przez niniejszego użytkownika |
» 2014-01-09 19:30:06 cos jest jeszcze nie tak, poniewaz po wpisaniu wejscia jak wprzykladzie program nie podaje wyniku tylko dalej jeszcze trwa.(korzystajac z tego kodu) |
|
00Andre |
» 2014-01-09 19:36:22 Nie rozumiem o co ci chodzi ;c możesz wytłumaczyć jeszcze raz
|
|
szirot Temat założony przez niniejszego użytkownika |
» 2014-01-09 19:42:19 W tresci zadania chca ze np podaje 5 to podaje 5 slow po tym pieciu podaje jeszcze jedno (to z ktorym reszta bedzie porownywana) a nastepnie na wyjsciu podaje ile razy powtorzylo sie to slowo. Jednak kiedy odpalam Twój kod po wpisaniu tych 5 slow i podaniu tego z ktorym maja byc porownane , nie dostaje wyniku tylko program dalej dziala i prosi o kolejne slowa. I wlasnie za cholere nie wiem jak zrobic ten kod zeby dziala jak prosza w zadaniu |
|
00Andre |
» 2014-01-09 20:02:46 #include <iostream> #include <string>
using namespace std;
int main() { int n; string wyraz; cout << "Podaj : "; cin >> n; cin.ignore(); string * tablica_wyrazow = new string[ n ]; cout << endl; int wynik = 0; for( int i = 0; i < n; i++ ) { cout << "Podaj " << i << " : "; getline( cin, tablica_wyrazow[ i ] ); } cout << "\n\nPodaj wyraz : "; getline( cin, wyraz ); for( unsigned a = 0; a < n; a++ ) { if( tablica_wyrazow[ a ] == wyraz ) ++wynik; } cout << wynik << " razy tyle sie razy powtorzyl post : " << wyraz << endl; delete[] tablica_wyrazow; return 0; }
Myślę , że zrozumiesz ten kod. Kod jest prosty ale dla ciebie początkującego w c++ może być troszkę nie jasny. |
|
« 1 » 2 |