Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

wczytywanie słów do tablicy

Ostatnio zmodyfikowano 2014-01-09 20:07
Autor Wiadomość
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
P-101684
00Andre
» 2014-01-09 18:42:04
Jeśli chcesz całą linią wyczytać i enterem zakończyć to użyj funkcji getline
C/C++
#include <iostream>
#include <string>

using namespace std;

int main()
{
    string wyraz;
   
    cout << "Podaj wyraz : ";
   
    getline( cin, wyraz );
   
    return 0;
}

P-101687
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
P-101690
00Andre
» 2014-01-09 19:17:23
C/C++
#include <iostream>
#include <string>

using namespace std;

int main()
{
    int n;
    // Komunikat
    cout << "Podaj : ";
   
    // Podajemy
    cin >> n;
   
    cin.ignore();
   
    // Nowa linia
    cout << endl;
   
    int wynik = 0;
   
    for( int i = 0; i <= n; i++ )
    {
        // Dekleracja zmienych
        string f, g;
       
        // Komunikat
        cout << "Podaj : ";
       
        // Podajemy
        getline( cin, f );
       
        // Komunikat
        cout << "\nPodaj : ";
       
        // Podajemy
        getline( cin, g );
       
        // Sprawdzamy czy sa rowne
        if( f == g )
        {
            // Dodajeym do wynkiu
            ++wynik;
           
            // Zatrzymujemy petle
            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
P-101693
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)
P-101694
00Andre
» 2014-01-09 19:36:22
Nie rozumiem o co ci chodzi ;c możesz wytłumaczyć jeszcze raz
P-101697
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
P-101700
00Andre
» 2014-01-09 20:02:46
C/C++
#include <iostream>
#include <string>

using namespace std;

int main()
{
    int n;
   
    // Nasza zmienna ktora bedzie sprawdzala czy powtarzaja sie slowa podane przez gracza
    string wyraz;
   
    // Komunikat
    cout << "Podaj : ";
   
    // Podajemy
    cin >> n;
   
    cin.ignore();
   
    // Tworzenie dynamicznej tablicy jednowymiarowej typu int
    // Poniewaz, przy dekleracji tablicy rozmiaru musi byc juz znany
    // w tym przypadku nie jest znany i dopiero go podajesz
    // wiec tworzymy wskanizk na nowa tablice o rozmiarze n
    string * tablica_wyrazow = new string[ n ];
   
    // Nowa linia
    cout << endl;
   
    int wynik = 0;
   
    for( int i = 0; i < n; i++ )
    {
        // Komunikat
        cout << "Podaj " << i << " : ";
       
        // Podajemy
        getline( cin, tablica_wyrazow[ i ] );
    }
   
    // Teraz podajemy nasz wyraz
    cout << "\n\nPodaj wyraz : ";
   
    // Podajemy
    getline( cin, wyraz );
   
    // Teraz sprawdzamy czy wszystkie elementy tablicy sa rowne naszemu wyrazowi
    for( unsigned a = 0; a < n; a++ )
    {
        // Warunek
        // Sprawdzamy czy dany element tablicy jest rowny naszemu wyrazowi
        // jesli tak to dodajemy do wyniku
        if( tablica_wyrazow[ a ] == wyraz ) ++wynik;
       
    }
   
    // Pokazanie wyniku
    cout << wynik << " razy tyle sie razy powtorzyl post : " << wyraz << endl;
   
    // Niszczenie naszej tablicy, aby zwolnic miejsce w pamieć, jak tej tablicy już nie używamy
    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.
P-101705
« 1 » 2
  Strona 1 z 2 Następna strona