Diskuze: chyba v programu

C++ C a C++ chyba v programu

Avatar
lukes90
Člen
Avatar
lukes90:

#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:

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):

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
:)
Avatar
lukes90
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
lukes90:

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:

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):

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

Nahoru Odpovědět 9.12.2014 15:09
:)
Avatar
lukes90
Člen
Avatar
lukes90:

Program main.exe přestal pracovat.

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

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
:)
Avatar
lukes90
Člen
Avatar
lukes90:

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:

přes devc++

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

zkus pismena zvetsit na 65535 :)

Editováno 9.12.2014 15:56
Nahoru Odpovědět 9.12.2014 15:55
:)
Avatar
Odpovídá na lukes90
Luboš Běhounek (Satik):

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
:)
Avatar
lukes90
Člen
Avatar
lukes90:

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:

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

 
Nahoru Odpovědět  +1 9.12.2014 17:09
Avatar
Odpovídá na lukes90
Luboš Běhounek (Satik):

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

Nahoru Odpovědět 9.12.2014 18:02
:)
Avatar
lukes90
Člen
Avatar
lukes90:

:-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.