Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: chyba v programu

Aktivity
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 11:48

#include <cstdlib>
#include <fstream>
#include <iostream>

using namespace std;
int i,b,pismena[255];
char znak,pok;
int main (){
string slovo ;
ifstream in ;
in . open ("vstup.txt");
if ( in . is_open ()) {
while ( in . get ( znak )){
slovo[i]=znak;
i=i+1;

}

in . close ();
}
cout<<i;

for (int a=0;a<i;a++)
{ b=slovo[a] ;
pismena[b]=pis­mena[b]+1 ;

}

for (int a=0;a<255;a++)
{ if(pismena[a]>0){
pok=a;
cout<<pismena[a]<<" "<<pok<<endl;
}

}

system("PAUSE");
return EXIT_SUCCESS;
}
Nevíte jakou tam mám přesně chybu prosím?

 
Odpovědět
9.12.2014 11:48
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 11:56

Ještě chci dodat, že program má počítat písmena v souboru, ale při více jak 31 znacích spadne.

 
Nahoru Odpovědět
9.12.2014 11:56
Avatar
Odpovídá na lukes90
Luboš Běhounek Satik:9.12.2014 12:39

Co to trochu zjednodusit?

#include <cstdlib>
#include <fstream>
#include <iostream>

using namespace std;

int pismena[255] = {0};

int main ()
{
  ifstream in ;
  in . open ("vstup.txt");
  if ( in . is_open ())
  {
    char znak;
    while ( in . get ( znak ))
      pismena[znak]++;

    in . close ();
  }

  for (int a=0;a<255;a++)
  {
    if (pismena[a]>0)
      cout<<(char)a<<" "<<pismena[a]<<endl;
  }

  system("PAUSE");
  return EXIT_SUCCESS;
}
Editováno 9.12.2014 12:41
Nahoru Odpovědět
9.12.2014 12:39
https://www.facebook.com/peasantsandcastles/
Avatar
lukes90
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
lukes90:9.12.2014 15:04

Děkuji za zjednodušení, ale ani tvůj kód mi nejde pustit pro textoví soubor s více jak 32 znaky. Nevíš čím by to mohlo být?

 
Nahoru Odpovědět
9.12.2014 15:04
Avatar
lukes90
Člen
Avatar
Odpovídá na Luboš Běhounek Satik
lukes90:9.12.2014 15:04

Děkuji za zjednodušení, ale ani tvůj kód mi nejde pustit pro textoví soubor s více jak 32 znaky. Nevíš čím by to mohlo být?

 
Nahoru Odpovědět
9.12.2014 15:04
Avatar
Odpovídá na lukes90
Luboš Běhounek Satik:9.12.2014 15:09

Me to normalne bezi pro libovolny pocet znaku, s jakou hlaskou ti to spadne?

Nahoru Odpovědět
9.12.2014 15:09
https://www.facebook.com/peasantsandcastles/
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 15:41

Program main.exe přestal pracovat.

 
Nahoru Odpovědět
9.12.2014 15:41
Avatar
Odpovídá na lukes90
Luboš Běhounek Satik:9.12.2014 15:44

A když ho spustíš přes visual studio (nebo přes co ho píšeš) ?
Jinak to může být kódováním - co za znak máš na té 32. pozici?
Zkus to na souboru bez diakritiky.

Editováno 9.12.2014 15:46
Nahoru Odpovědět
9.12.2014 15:44
https://www.facebook.com/peasantsandcastles/
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 15:47

Tak můj to dělal asi po 30 znacích, ale ten tvůj mi přestane pracovat u háčků a čárek.

 
Nahoru Odpovědět
9.12.2014 15:47
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 15:52

přes devc++

 
Nahoru Odpovědět
9.12.2014 15:52
Avatar
Odpovídá na lukes90
Luboš Běhounek Satik:9.12.2014 15:55

zkus pismena zvetsit na 65535 :)

Editováno 9.12.2014 15:56
Nahoru Odpovědět
9.12.2014 15:55
https://www.facebook.com/peasantsandcastles/
Avatar
lukes90
Člen
Avatar
 
Nahoru Odpovědět
9.12.2014 15:59
Avatar
Odpovídá na lukes90
Luboš Běhounek Satik:9.12.2014 16:12

Tak ho zkus spustit přes debugger.

Případně si nech vypisovat obsah proměnné znak, možná se tam vyskytne něco vyššího než je rozsah pole pismena :) .

Nahoru Odpovědět
9.12.2014 16:12
https://www.facebook.com/peasantsandcastles/
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 16:33

Tak sem zkusil jiný překladač a tu mi to píše návrat procesu -1073741819 (0xc0000005)

 
Nahoru Odpovědět
9.12.2014 16:33
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 17:09

Tak chyba je v tom, že písmena s háčky mají zápornou hodnotu.

 
Nahoru Odpovědět
9.12.2014 17:09
Avatar
Odpovídá na lukes90
Luboš Běhounek Satik:9.12.2014 18:02

signed / unsigned, s tím je občas zábava :)

Nahoru Odpovědět
9.12.2014 18:02
https://www.facebook.com/peasantsandcastles/
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 20:51

:-D Tak či onak moc děkuji za pomoc :-D

 
Nahoru Odpovědět
9.12.2014 20:51
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 17 zpráv z 17.