Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z napisaniem programu.


Rekomendowane odpowiedzi

Opublikowano

Cześć. 

 

Dostałem zadanie, aby ,,Napisz program, który we wskazanym pliku zamieni pierwsze litery wyrazów na wielkie, a wynik umieści w nowym pliku (skorzystaj ze strumieni stringstream)". Mógłby ktoś podesłać kod takiego programu, abym porównał z moim? Bo coś czuję, że coś zrąbałem :D

 

Za pomoc dam limit Like :D

Opublikowano

Cwaniaczek... Daj swój kod to porównamy go do naszego. Co ci nie działa ze sądzisz że zrabales?

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Cwaniaczek... Daj swój kod to porównamy go do naszego. Co ci nie działa ze sądzisz że zrabales?

#include <iostream>
#include <cmath>
#include <fstream>
 
using namespace std;
 
main ()
{
ifstream odczyt("tekst1.txt");
ofstream zapis("tekst2.txt");
 
string tab[10];
int i=0;
 
if (odczyt)
 
{
while(!odczyt.eof())
 
{
odczyt>>tab[i];
cout<<tab[i]<<" ";
i++;
}
 
cout<<endl;
}
 
for (int j=0;j<i;j++)
 
{
tab[j][0]=toupper(tab[j][0]);
cout<<tab[j]<<" ";
zapis<<tab[j]<<" ";
}
 
 
zapis.close();
odczyt.close();
 
 
return 0;
}

Ale w poleceniu było, że trzeba użyć stringstream'ów, a ja nie wiem jak...

Opublikowano

Ja nie wiem po co. Kolejne idiotyczne zadanie, które wymusza konkretne rozwiązanie.

#include <sstream>
#include <string>
#include <fstream>

using namespace std;

int main ()
{
ifstream odczyt("tekst1.txt");
ofstream zapis("tekst2.txt");
 
string wyraz;
for(;
{
   odczyt >> wyraz;
   if(odczyt.eof()) break;
   if(wyraz[0] >= 'a' && wyraz[0] <= 'z') wyraz[0]-='a'-'A';
   stringstream s(wyraz);
   string wyjscie;
   s >> wyjscie;
   odczyt << wyjscie;
}
return 0;
}

pisane na szybko

Opublikowano

Deklaracja zmiennych przy każdym obiegu pętli nie opóżnia działania programu? chodzi mi o string wyjście. Ja bym to wyciągnął poza pętlę a w niej tylko przypisywał odpowiednią wartość.

3587513.png


Potrzebujesz pomocy? Pisz śmiało na PW/Skype/Gadu-Gadu!


(albo napisz na forum... ^.^)

Opublikowano

Deklaracja zmiennych przy każdym obiegu pętli nie opóżnia działania programu? chodzi mi o string wyjście. Ja bym to wyciągnął poza pętlę a w niej tylko przypisywał odpowiednią wartość.

W tym przypadku ma to zerowe znaczenie, bo najbardziej spowalnia dysk.

W innych przypadkach przy klasie string raczej nie zauważysz różnicy.

Opublikowano

@OczkoSX 

Ogólnie rzecz biorąc, to nie ma znaczenia i nie należy się tym przejmować, w szczególności zupełnie nieproduktywne jest wypominanie takich rzeczy. 

Pytanie zaciekawiło mnie na tyle, że przeprowadziłem szybki test. 

O dziwo, tworzenie stringstream'a (na "podstawie"(?) pustego string'a) jest 10 razy bardziej kosztowne niż string'a.

Mówimy o koszcie rzędu 0.1s - 1s na milion wykonań pętli @ 3.3 GHz. 

Ta sygnatura jest pusta.

Opublikowano

Jest jakas roznica w szybkosci dzialania programu miedzy takim zapisem

for(stringstream ss;!odczyt.eof();zapis<<(ss.str())<<'\n',ss.str(""))
{
string s;

odczyt>>s;
if('a'<=s[0]&&s[0]<='z') s[0]-=32;
ss<<s;
}

 
a takim ?

for(;
{
stringstream ss;
string s;

odczyt>>s;
	if(odczyt.eof()) break;
	if('a'<=s[0]&&s[0]<='z') s[0]-=32;	
ss<<s;
zapis<<(ss.str())<<'\n';
}
Opublikowano

Pomijając to, że ten pierwszy zadziała inaczej niż drugi, a formatowanie jest niepotrzebnie tak skondensowane to różnica w szybkości działania jest tylko teoretyczna.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...