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í.
Avatar
lukes90
Člen
Avatar
lukes90:8.12.2014 19:01

Ahoj,
mám malý problém, nemůžu přijít na to jak načtu libovolně dlouhý text a spočítám jeho znaky včetně mezer. Poradí prosím někdo.
Předem děkuji za odpovědi.

 
Odpovědět
8.12.2014 19:01
Avatar
Odpovídá na lukes90
Libor Šimo (libcosenior):9.12.2014 6:37

Text má byť načítaný z klávesnice alebo zo súboru?

Nahoru Odpovědět
9.12.2014 6:37
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na lukes90
Libor Šimo (libcosenior):9.12.2014 7:24

Ak je to z klávesnice, tak nejak takto:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
 {
    char text[1000000];
    scanf(" %999999[^\n]", text);
    // vypis dlzky retazca
    // za pouzitia kniznice string.h
    printf("%d\n", strlen(text));
    // bez pouzitia string.h
    int i = 0;
    while(text[i] != 0)
        i++;
    printf("%d\n", i);

    return 0;
 }

ALE, **ľubovolne dlhý text je **veľmi nepresná hodnota, alebo ak je to myslené doslova, pocet znakov v texte je predsa len obmädzený.

Nahoru Odpovědět
9.12.2014 7:24
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
lukes90
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
lukes90:9.12.2014 8:03

Moc se omlouvám, text má být načten ze souboru.

 
Nahoru Odpovědět
9.12.2014 8:03
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 10:40

Přišel jsem na
int main (){
string slovo ;
ifstream in ;
in . open ( "vstup.txt" );
if ( in . is_open ()) {
in >> slovo ;
cout << slovo ;
in . close ();
}
ale to bohužel skončí s mezerou.

 
Nahoru Odpovědět
9.12.2014 10:40
Avatar
lukes90
Člen
Avatar
lukes90:9.12.2014 11:10

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

using namespace std;
int i=0,b,pismena[256];
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 ();
}

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

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

}

Mám to takhle, bohužel při více znacích mi to přestane pracovat, nevíte co stím?:D
.

 
Nahoru Odpovědět
9.12.2014 11:10
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 6 zpráv z 6.