zliczanie wystąpień poszczególnych liter
-
- Użytkownik
- Posty: 114
- Rejestracja: 29 paź 2007, o 19:00
- Płeć: Mężczyzna
- Lokalizacja: Rybnik
- Podziękował: 50 razy
zliczanie wystąpień poszczególnych liter
Mam napisać program, który tworzy model probabilistyczny dla pliku tekstowego ASCII (26 liter) zliczający liczbę wystąpień poszczególnych liter.
-
- Użytkownik
- Posty: 114
- Rejestracja: 29 paź 2007, o 19:00
- Płeć: Mężczyzna
- Lokalizacja: Rybnik
- Podziękował: 50 razy
zliczanie wystąpień poszczególnych liter
Konkretnie to z calym tym zadaniem, bo nigdy nie programowalem a musze to zrobic. Dlatego w visual basic bo ponoc jest najprosciej...
- Szemek
- Użytkownik
- Posty: 4819
- Rejestracja: 10 paź 2006, o 23:03
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 43 razy
- Pomógł: 1407 razy
zliczanie wystąpień poszczególnych liter
Czyli równie dobrze może być inny język programowania: Pascal, C/C++, C# etc.luke877 pisze:Dlatego w visual basic bo ponoc jest najprosciej...
-
- Użytkownik
- Posty: 941
- Rejestracja: 17 gru 2007, o 21:48
- Płeć: Mężczyzna
- Lokalizacja: Kingdom Hearts
- Podziękował: 6 razy
- Pomógł: 222 razy
zliczanie wystąpień poszczególnych liter
Tworzysz hasha/tablicę asocjacyjną/mapę (w C++). Teraz po prostu jedziesz w pętli: dla każdego znaku z pliku hash[znak]++;
W perlu:
W perlu:
Kod: Zaznacz cały
open ("moj", "<plikk.txt");
%hash=();
while(<moj>)
{
chomp;
@litery=split(', $_);
foreach $lit(@litery)
{
$hash{$lit}++ if($lit=~/[A-Z]/i);
}
}
close moj;
foreach $litera(sort keys %hash)
{
print "$litera -> $hash{$litera}
";
}
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
zliczanie wystąpień poszczególnych liter
Można np. tak:
Pozdrawiam.
Kod: Zaznacz cały
const unsigned char LOWER=' ';
const unsigned char UPPER='~';
const unsigned int CHARS=UPPER-LOWER+1;
void countChars(std::ifstream& file,int chars[CHARS])
{
unsigned char c=0;
while(!file.eof())
{
c=0;
file>>c;
if(c>=LOWER && c<=UPPER)
++chars[c-' '];
}
}
-
- Użytkownik
- Posty: 6607
- Rejestracja: 16 sty 2007, o 19:42
- Płeć: Mężczyzna
- Podziękował: 119 razy
- Pomógł: 1823 razy
zliczanie wystąpień poszczególnych liter
To nie jest cały program, tylko funkcja do zliczania znaków. Trzeba dodać nagłówki (iostream,fstream) i funkcję main, która tworzy zmienne, otwiera plik i wywołuje funkcję.
Pozdrawiam.
Pozdrawiam.
-
- Użytkownik
- Posty: 941
- Rejestracja: 17 gru 2007, o 21:48
- Płeć: Mężczyzna
- Lokalizacja: Kingdom Hearts
- Podziękował: 6 razy
- Pomógł: 222 razy
zliczanie wystąpień poszczególnych liter
W C++ z mapą
Kod: Zaznacz cały
#include <iostream>
#include <fstream>
#include <map>
using namespace std;
map<char, int>moja;
map<char,int>::iterator it1;
int main()
{
ifstream plik;
plik.open("plikk.txt");
while(!plik.eof())
{
string s;
plik >>s;
for(int i=0; i<s.size(); i++)
moja[s[i]]++;
}
plik.close();
for(it1=moja.begin(); it1!=moja.end(); it1++)
cout<<it1->first<<<<it1->second<<endl;
system("pause");
return 0;
}
- Szemek
- Użytkownik
- Posty: 4819
- Rejestracja: 10 paź 2006, o 23:03
- Płeć: Mężczyzna
- Lokalizacja: Gdańsk
- Podziękował: 43 razy
- Pomógł: 1407 razy
zliczanie wystąpień poszczególnych liter
soku11,soku11 pisze:@luke877:
Kod jest ok. Po prostu ty nie potrafisz nawet użyć gotowca
Pozdrawiam.
luke877 napisał, że nie ma pojęcia o programowaniu. Cóż poradzić...
Jak widać, gotowiec to kiepska forma pomocy.
luke877, dopisz jeszcze #include<string>