1 / 22
Oct 2004

I have another problem.
Can anybody say me what operation system is on the Judge PC. I have problem with #10 and #13 in this problem. Can anybody help me?

Operating system is Linux 2.4.27-grsec. The processor is PII266.

If I am not mistaken, It means that on the end of each line there is only one character. noix, can you tell me which character and its ASCII code?

It's, um, newline character. And its code is 10.

3 years later

#include<iostream>
using namespace std;
main()
{
      unsigned char znaki[256];
      string a,b="";
      for(int i=0; i<256; i++)
      {
              znaki[i]=i; 
      }  
      while(getline(cin,a))
      {
              a.append(" "); 
              a[a.length()-1]=10;            
              b=b+a;
      }
      for(int i=0; i<=255; i++)
      {
              int s=0;
              for(int j=0; j<b.length(); j++)
              {
                      if(znaki[i]==b[j]) s++;
              }
              if(s>0) cout<<i<<" "<<s<<endl;
      }            
}

Co ja tu mam źle? ... Niby wszystko działa jak ta lala ale pisze mi że błędna odpowiedź...[/code]

1 year later

dobra wink rozwiązanie jest dość proste ;]

musisz dać unsigned char zamiast char w dwóch miejscach wink

struct tab
{
   unsigned char zn;
   int ile;
};

oraz

unsigned char zn;

no i jeszcze zamiast

while((zn = getchar()) != EOF)

dajesz

while(scanf("%c",&zn)!= EOF)

i program powinien przejść wink

1 month later

W tym zadaniu nalezu uzyc rozszerzonej ascii tlyko nie mam pojecia jak ja "wlaczyc"

Moj kod(super prosty i niezawodny dla standardowej ascii):

#include <iostream>
#include <string>
using namespace std;
int main()
{
	int t[200];
	for(int i = 0; i < 127;i++){t[i]=0;}
	string str;
	while(getline(cin,str) && (cin.eof() == false))
	{
		for(int i=0; i < str.length(); i++)
		{
			t[str[i]]++;
			if(str[i]=='ó'){t[162]++;}
		}
		t[10]++;
	}
	for(int i=0; i < 127;i++)
	{
		if(t[i] != 0){cout << i<< " " << t[i] << endl;}
	}
}

Ktos ma pomysl jkaby to przerzucic na extended ascii?

ja miałem

unsigned char znak;
while(scanf("%c",&znak)!=EOF) tab[znak]++;

i to powinno załatwić sprawę wink

2 months later

Możę mi ktoś powiedzieć czemu ten program nie działa? Właściwie to uż wiem czemu ale nie wiem jak to naprawić, polskie znaki czyta jako jakieś krzaczki.

#include <iostream>
using namespace std;
int main()
{
	int tab[256];
	unsigned char znak;
	for(int i = 0; i < 256; i++) tab[i]=0;	
	while(scanf("%c", &znak)!=EOF) tab[znak]++;
	for(int i = 0; i < 256; i++) if(tab[i] != 0) cout << i << ' ' << tab[i] << endl;
	return 0;
}

pomoże ktoś?

Witaj!
Zrób to na unii. smiley
W unii jeden char i jeden int.
Wprowadzasz znaki do unii na char-a,wyprowadzasz znaki z unii int-em.
Do tego dwie tablice int.
Po tablicach jeździsz intem z unii.
Dalej sobie poradzisz,bo widzę,że część kodu masz taką samą jak ja miałem. smiley

Nie za bardzo wiem jakma to zrobić unią, zrobiłem więc strukturę, ale dalej ten sam błąd

#include <iostream>
using namespace std;
struct badaj
{
	unsigned char znak;
	int ile;
};
int main()
{
	badaj tab[256];
	unsigned char znak;
	for(int i = 0; i < 256; i++)
	{
		tab[i].znak = static_cast<char>(i);
		tab[i].ile = 0;
	}
	while(scanf("%c", &znak)!=EOF) tab[static_cast<int>(znak)].ile++;
	for(int i = 0; i < 256; i++) if(tab[i].ile != 0) cout << static_cast<int>(tab[i].znak) << ' ' << tab[i].ile << endl;
	return 0;
}

tab1[int z unii]++;
tab2[int z unii]= int z unii;
No to masz małą podpowiedź. wink

union un
{
signed char;
signed int;
};
int tablica[tutaj Twoja wielkość tablicy];
while(cin..........)tablica[int z unii ]++;
for(int  a = 0; a <  Twoja wielkość tablicy; ++a)
    tutaj tylko wyświetlanie

Wystarczyła nawet jedna tablica.
Jakie to proste. wink

1 month later

Kolejne zadanie, kolejny problem. wink Python 2.6.2, Windows XP... i wciąż błędna odpowiedź...

[code]while True:
try:
t = raw_input()
kody = []

    for x in t:
        if ord(x) not in kody:
                kody.append(int(ord(x)))

    kody.sort()

    for h in kody:
        print h, t.count(chr(h))

except EOFError:
    break[/code]

To i ja sie podepne pod temat:)

Krotko i zwiezle caly czas WA;(
HELP:)

Probowalem na rozne sposoby:
while(!(cin >> l).eof())
while(cin.get(l))
while(l = getchar() != EOF)

Z powyzszych tylko "cin.get()" nie omija bialych znakow ale nie dziala z unsigned:(

Rozwiązane usunięte:)

Z gory dzieki:)

Możesz dać np.
int x;
i wczytać to jako znak. Wtedy i z EOFem nie będzie problemu i zmieści się w unsigned char. smile

Nie bardzo rozumiem jak to zrobic.

Przeciez nie moge wprowadzic znakow pod int!

int i;
cin >> i;
cout << (unsigned char)i;

Dostane jakies szlaczki. On rozpozna co najwyzej numer w kodzie ASCII i wtedy dopiero dobrze wyswietli ale wprowadzane dane to znaki:(
Chyba ze zle zrozumialem Twoj pomysl.

Jeśli wczytujesz:
int i;
cin>>i;
to 'i' wczytujesz jako liczbę.
Mi natomiast chodzi o to, aby wczytać ją jako znak, a nie wypisać. Tak więc polecam użyć getchara zamiast inta. wink