Zmienna, która jest wynikiem pętli.

Rybakoks

Użytkownik
Dołączył
Kwiecień 21, 2011
Posty
4
Witam. Orientuje się może ktoś jak stworzyć zmienną, która jest wynikiem działania pętli?
Chodzi o to, aby ta zmienna cały czas się 'aktualizowała'. Chcę tą zmienna/zmienne zapisać do pliku txt.

Kod:
c=cin.get();
if(c>='A' && c<='Z' || c>='a' && c<='z')
{         
         cout<<c+3;  //tą część chce umieścić w zmiennej
}

Udaje mi się poprostu zapisać c+3 w zmiennej np. x = c+3; Ale, jeśli w nastepnym cyklu c przybiera inną wartość program ignoruje to i zapisuje do pliku tylko 68.

Przykładowo wpisze ABCD to program wyświetla 68697071 i właśnie tę liczbę chce umieścić w zmiennej.
Może coś ze stringami zrobić? Z góry dziękuje za odpowiedź.
 

loganek

Były Moderator
Dołączył
Listopad 11, 2006
Posty
563
tylko że wtedy musisz wiedzieć jaka jest długość liczby. można więc albo wrzucać liczby na stos, potem sprawdzić jej długość, i wykorzystać metodę sinisa, albo od razu, zaraz po wyświetleniu liczby dopisywać ją do pliku
 

Rybakoks

Użytkownik
Dołączył
Kwiecień 21, 2011
Posty
4
Chyba spróbuje tak, że gdy dana liczba zostanie wyświetlona na ekranie odrazu zostanie dopisana do pliku. Czyli np. ofstream fout("password.txt") wrzucić do pętli po cout<<c+3 ?
 

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
Kod:
#include <sstream>
#include <fstream>
...
stringstream liczby;
ofstream outfile("password.txt");
...
// petla 
c=cin.get();
if(c>='A' && c<='Z' || c>='a' && c<='z')
{
    liczby<<c+3;  //tą część chce umieścić w zmiennej
}
outfile << liczby.str();
 

Rybakoks

Użytkownik
Dołączył
Kwiecień 21, 2011
Posty
4
Kod:
stringstream liczby;
ofstream outfile("password.txt");
char c=0;
unsigned int i=0;
while (1)
{

                      c=cin.get();
                      if(c>='A' && c<='Z' || c>='a' && c<='z')
                      {         
                                liczby<<c+3;
                      
                                
                      } 
                      
                      else if(c==EOF)
                           break;
                        
                      i++;
} 
outfile << liczby.str();
outfile.close();
getch();

Mam coś takiego i gdy włączam program nie moge nic wpisać do zmiennej c ;/
Jak jakoś poprzestawiam to i tak wyświetla liczby w konsoli (szyfruje), ale nie zapisuje do pliku.
 

discovery44

Były Moderator
Dołączył
Sierpień 14, 2007
Posty
763
Kod:
#include <iostream>
#include <sstream>
#include <fstream>
using namespace std;

int main()
{
    stringstream liczby;
    char a = 'a';
    while(a != 'x')
    {
        cin >> a;
        if(a >= 'A' && a <= 'Z' || a >= 'a' && a <= 'z')
        liczby << a + 3;
    }
    ofstream outfile("password.txt");
    outfile << liczby.str();
    outfile.close();
}
Ustaw sobie warunek w while jaki chcesz.
 

Rybakoks

Użytkownik
Dołączył
Kwiecień 21, 2011
Posty
4
Wielkie dzięki discovery44, wszystko działa jak powinno ;)

EDIT:
Jednak nie działą ;/

Kod:
#include <iostream>
#include <conio.h>
#include <fstream>
#include <sstream>
using namespace std;


int main()
{
  int wybor;
  system ("cls");
  cout<<"**** Szyfrator ****";
  cout<<"\n(1) Szyfrowanie";
  cout<<"\n(2) Odszyfrowywanie";
  cout<<"\n(3) Wyjscie";
  cout<<"\nWpisz: ";
  cin>>wybor;
  switch (wybor)
  {
         case 1:
              stringstream liczby;
              char a;
              while (1)
              {
                    
                    cin>>a;
                    if(a >= 'A' && a <= 'Z' || a >= 'a' && a <= 'z')
                    liczby << a + 3;
                    cout<<a+3;
                    
                    
              }
              ofstream outfile("password.txt");
              outfile << liczby.str();
              outfile.close();
  
  }
  return 0;
}

Ladnie program mi szyfruje w konsoli ale zeby zapisac do pliku to musi wyjsc z pętli. Narazie ma warnuek wpisany 1 ale gdy dajmy na to zrobie int b=0; b>5; b++; to tylko i wyłącznie wychodzi mi z pętli jeśli slowo wpisane ma 5 liter. Jaki warunek wpisać do while, aby wychodził z pętli po pierwszej operacji?
 
Ostatnia edycja:
Do góry Bottom