NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.
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.