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

Zliczacz liter SPOJ

Object Storage Arubacloud
0 głosów
596 wizyt
pytanie zadane 2 października 2018 w SPOJ przez krawiecki Początkujący (490 p.)
edycja 2 października 2018 przez krawiecki

Nie rozumiem z jakiego powodu program wypisuje mi dla przykładowych danych na początku 
0 1
Potem wypisuje prawidłowo ale nie mogę znaleźć błędu. Może też dlatego, że dopiero zacząłem używać map a ostatnią pętle przepisałem z jakiegoś tutoriala. Dodatkowe pytanie, czy da się jakoś inaczej wypisać wszystkie elementy mapy, ponieważ nie do końca rozumiem ten zapis w ostatniej pętli.

https://pl.spoj.com/problems/JZLICZ/
 

#include <iostream>
#include <vector>
#include <map>
using namespace std;


int main(int argc, const char * argv[])
{
    int n;
    
    cin >> n;
    string temp;

    vector<string> dane;
    map<char, int> liczniki;
    
    while (cin >> temp)
    {
        dane.emplace_back(temp);
    }
    
    for (int i=0; i<dane.size(); i++) {
        
        for (int j=0; j<dane[i].size(); j++) {
            
            liczniki[dane[i][j]]++;
        }
    }
    
    for (map<char , int>::iterator it = liczniki.begin(); it !=liczniki.end(); it++) {
        cout << it->first << " " << it->second << endl;
    }
    return 0;
}

 

komentarz 2 października 2018 przez niezalogowany
Jakiś link do zadania? Może ustawisz chociaż raz na kilka tematów dobrą kategorię? ;)
komentarz 2 października 2018 przez krawiecki Początkujący (490 p.)
Za dużo ode mnie wymagasz ;)
komentarz 2 października 2018 przez niezalogowany
Tak lepiej :P

2 odpowiedzi

0 głosów
odpowiedź 2 października 2018 przez adamus Użytkownik (860 p.)
Możesz to zadanie zrobic w nastepujący sposob jesli chodzi o zliczanie literek jedziesz forem po duzych i malych robisz warunek ze jakies tab[[txt-1]-'a']++;

Nastepnie wyswietlasz char(i+'a') wystapilo... <<tab[i] pamietaj tylko o warunku ktory wyswietli ci wszytskie litery alfabetu.
komentarz 2 października 2018 przez adamus Użytkownik (860 p.)

Przykładowo 

	dlugosc=zdanie.length();
	for(i=0;i<dlugosc;i++)
		{
			tab[zdanie[i]-'a']++;
		}

 

0 głosów
odpowiedź 2 października 2018 przez niezalogowany
edycja 2 października 2018

Nie ma sensu używać vector. Na wyjściu mają być najpierw ilości małych liter, a dopiero później duże. W Twoim kodzie klucze mapy są posortowane wg kodów tablicy ASCII. Możesz znaleźć położenie małych liter i wypisać je w pierwszej kolejności:

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main(int argc, const char * argv[])
{
	int n;
	cin >> n;

	string temp;
	map<char, int> liczniki;
	while (cin >> temp)
	{
		for (int i = 0; i<temp.size(); i++) 
		{
			liczniki[temp[i]]++;
		}
	}

	auto lowerCasePos = liczniki.lower_bound('a');
	
	for (map<char, int>::iterator it = lowerCasePos; it != liczniki.end(); it++) {
		cout << it->first << " " << it->second << endl;
	}
	for (map<char, int>::iterator it = liczniki.begin(); it != lowerCasePos; it++) {
		cout << it->first << " " << it->second << endl;
	}
	return 0;
}

Podobne pytania

0 głosów
1 odpowiedź 1,534 wizyt
pytanie zadane 29 lipca 2016 w C i C++ przez KiTroN Początkujący (300 p.)
0 głosów
1 odpowiedź 380 wizyt
pytanie zadane 24 czerwca 2020 w C i C++ przez dernis Nowicjusz (120 p.)
0 głosów
1 odpowiedź 139 wizyt
pytanie zadane 14 czerwca 2022 w C i C++ przez polandonion Mądrala (7,040 p.)

92,568 zapytań

141,424 odpowiedzi

319,632 komentarzy

61,956 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!

...