» »

C++ datoteke

C++ datoteke

hexor ::

Hejla:)Imam program ki iz vhodne datoteke vhod.txt,ki vsebuje poljubno besedilo tvori datoteko izhod.txt z enakim besedilom,le da je preoblikovano na drug način:velike črke pretvarja v male črke
int main()
{
    char znak;
    ifstream dat1("vhod.txt",ios::in);
    ofstream dat2("izhod.txt",ios::out);
    
                      while(!dat1.eof())
                       {
                            znak=dat1.get();
                           
                             if((znak>64)&&(znak<91))
                                           {
                                                    znak=znak+32;
                                           }
                            dat2<<znak;
                      }
  

system("PAUSE");
return 0;

}


Zdaj me pa zanima,kako bi popravil moj program tako da bi vsako prebrano besedo,ki je daljša od 8 znakov zamenjal z znaki *.Na misel mi je padla metoda strlen() samo se pa uporablja z stringi ne pa z polji znakov,mogoče pa bi vstavil cstr() metodo ki bi pretvarjala znake v string.....Hvala za vsako pomoč!

technolog ::

imej eno spremeljivko, recimo ZADNJI, v kateri štej koliko iteracij nazaj si srečal presledek nazadnje (ZADNJI++). Ko srečaš še en presledek, nadomesti zadnjih ZADNJI znakov z *, ZADNJI pa nastavi spet na 0.

hexor ::

pomeni dam še en if znotraj while-a in povečujem števec,samo kako pa potem nastavim pogoj da je število znakov večje od 8?

ERGY ::

Jaz bi uporabil string::length() in pa string::replace(). Drugo mislim da sploh ni potrebno. Length() za določanje dolžine niza in replace v primeru, da je dolžina daljša od 8.

Lp

Zgodovina sprememb…

  • spremenilo: ERGY ()

golobich ::

//Za spremenit znake si že pogruntal kako gre, to maš pa da spremeniš besede daljše od 8 znakov v *
#include <iostream>
#include <fstream>
using namespace std;

int main ()
{
    ifstream beri ("vaja.txt");
    ofstream pisi ("vaja2.txt");
    if ( (beri.is_open() ) && (pisi.is_open()) )
    {
        
         while ( beri.good() )
         {
               string beseda = "";
               beri >> beseda;
               if (beseda.length() > 7)
               {
                                   for (int i=0; i<=beseda.length(); i++)
                                   {
                                           pisi << "*";
                                   }
                                   pisi <<" ";
               }
               else
               {
                   pisi << beseda <<" ";
               } 
              
         }
         beri.close();
         pisi.close();
    }
    system ("pause");
    return 0;
}

technolog ::

Ta koda je mal bullshit, ker bo tudi nove vrstice, tabulatorje in ostali whitespace spremenila v presledke.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C++] Izpis različnih besed, frekvenca besed in črk

Oddelek: Programiranje
51819 (1709) gendale
»

C++ programa

Oddelek: Programiranje
71032 (818) DubleG
»

[Java]Branje podatkov iz datoteke

Oddelek: Programiranje
342666 (1972) jeryslo
»

[C++][Naloga] Tekstovne datoteke, realna števila

Oddelek: Programiranje
254053 (3669) Gundolf
»

[NALOGA][NASM] problem pri povezovanju s C-jevskimi funkcijami

Oddelek: Programiranje
61384 (1242) c00L3r

Več podobnih tem