Skocz do zawartości

Problem z kodem.


trek

Rekomendowane odpowiedzi

Witam.

Mam taki oto kod i przy kompilacji wyskakuje jeden blad

 

#include <iostream>
#include <string>
#include <cstdlib>
#include <windows.h>
#include <ios.h>

using namespace std;

int main()
{
    
    int numer;
    cout<<"1 - Szyfrowanie\n2 - Odszyfrowywanie\nCo chcesz wykonac?? ";
    cin>>numer;

    if(numer==1)
    {
    
    string tekst, zaszyfrowany;
    int przesuniecie;
    cout<<"Podaj tekst do zaszyfrowania:"<< endl;
    cin.getline(tekst, 699);
    cout<<"Podaj o ile przesunac: ";
    cin>>przesuniecie;

    zaszyfrowany.resize(tekst.size());
    
    for (unsigned int i=0; i<tekst.size(); ++i)
        zaszyfrowany[i]=(tekst[i]+przesuniecie)%256;
    cout<<"\nTekst zaszyfrowany: ";
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY); 
    cout<<zaszyfrowany;
    }
    else if(numer==2)
    {
    
    }
    else if(numer>=3)
    {
    cout<<"Przykro mi ale niema polecenia o takim numerze\n";
    }
  getchar();
  return 0;
}

Moze ktos wie co jest nie tak??

Odnośnik do komentarza
Udostępnij na innych stronach

Compiling...

szyfrowanie.cpp

D:\Documents and Settings\Piotr.D\Pulpit\projekty c++\szyfrowanie\szyfrowanie.cpp(22) : error C2664: 'class std::basic_istream<char,struct std::char_traits<char> > &__thiscall std::basic_istream<char,struct std::char_traits<char> >::getline(char *,i

nt)' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'char *'

No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Error executing cl.exe.

 

szyfrowanie.exe - 1 error(s), 0 warning(s)

Odnośnik do komentarza
Udostępnij na innych stronach

#include <iostream>
#include <string>
#include <cstdlib>
#include <windows.h>
#include <conio.h>
//#include <ios.h>

using namespace std;

int main()
{
    
    int numer;
    string tekst;
    cout<<"1 - Szyfrowanie\n2 - Odszyfrowywanie\nCo chcesz wykonac?? ";
    cin>>numer;

    if(numer==1)
    {
    
    string tekst, zaszyfrowany;
    int przesuniecie;
    cout<<"Podaj tekst do zaszyfrowania:"<< endl;
    cin>>tekst;//getline(tekst, 699);
    cout<<"Podaj o ile przesunac: ";
    cin>>przesuniecie;

    zaszyfrowany.resize(tekst.size());
    
    for (unsigned int i=0; i<tekst.size(); ++i)
        zaszyfrowany[i]=(tekst[i]+przesuniecie)%256;
    cout<<"\nTekst zaszyfrowany: ";
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
    cout<<zaszyfrowany;
    }
    else if(numer==2)
    {
    
    }
    else if(numer>=3)
    {
    cout<<"Przykro mi ale niema polecenia o takim numerze\n";
    }
    
    getch();
  return 0;
}

Poprawiłem.

 

EDIT

Jeszcze poukładałem i "znormalizowałem" xD

#include <iostream>
#include <string>
#include <cstdlib>
#include <windows.h>
#include <conio.h>
//#include <ios.h>

using namespace std;

int main()
{
    int numer;

    cout << "1 - Szyfrowanie\n2 - Odszyfrowywanie\nCo chcesz wykonac?? ";
    cin >> numer;

    switch( numer )
    {
            case 1:
            {
                 string tekst, zaszyfrowany;
                 int przesuniecie;
                 
                 cout << "Podaj tekst do zaszyfrowania:" << endl;
                 cin >> tekst;
                 cout << "Podaj o ile przesunac: ";
                 cin >> przesuniecie;

                 zaszyfrowany.resize( tekst.size() );
    
                  for (unsigned int i = 0; i < tekst.size(); ++i )
                      zaszyfrowany[i]=(tekst[i]+przesuniecie)%256;
                  
                  cout << "\nTekst zaszyfrowany: ";
                  SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_INTENSITY);
                  cout << zaszyfrowany;
            }
            break;
            
            case 2:
            {
            }
            break;
            
            default:
                    cout<<"Przykro mi ale niema polecenia o takim numerze\n";
                
    }
    
    getch();
    return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Trzeba by napisać jakiś bufor który by pobierał znaki aż do momentu naciśnięcia Entera. Ja nie dam rady tego zrobić - głównie brak czasu :(

 

EDIT

Zrobiłem, gdyby ktoś jeszcze potrzebował:

/*
  Stałe w wincon.h

  Napisy:
  FOREGROUND_BLUE       = 1
  FOREGROUND_GREEN        = 2
  FOREGROUND_RED        = 4
  FOREGROUND_INTENSITY    = 8
  Tła:
  BACKGROUND_BLUE        = 16
  BACKGROUND_GREEN        = 32
  BACKGROUND_RED        = 64
  FOREGROUND_INTENSITY    = 128
*/

     #include <iostream>
     #include <string>
     #include <cstdlib>
     #include <windows.h>
     #include <conio.h>

     using namespace std;

     int main( void )
     {
          system("cls");
          
          int numer;

          cout << "1 - Szyfrowanie\n2 - Odszyfrowywanie\nCo chcesz wykonac?? ";
          cin >> numer;

          switch( numer )
          {
               case 1:
               {
                    string zaszyfrowany, tekst;
                    int przesuniecie;
                    char c;

                    cout << "Podaj tekst do zaszyfrowania:\n";
                    
                    /*
                      \x20 = Spacja
                      \x0D = Enter
                      \x08 = Backspace
                    */

                    while( ( c = getch() ) != '\x0D' ) //Wykonuj do momentu nacisniecia Entera
                    {
                         //Jesli klawisz nie byl Backspac'em
                         if( c != '\x08' )
                         {
                              cout << c;
                              tekst += c;
                         }
                         else
                         {
                              // Kasuj ostatni znak
                              if( tekst.size() > 0 )
                              {
                                   tekst.resize( tekst.size() - 1 );
                                   cout << '\x08' << '\x20' << '\x08'; //Kasuj znak
                              }
                         }
                    }

                    cout << "\nPodaj o ile przesunac: ";
                    cin >> przesuniecie;

                    zaszyfrowany.resize( tekst.size() );

                    for (unsigned int i = 0; i < tekst.size(); ++i )
                         zaszyfrowany[i] = ( tekst[i] + przesuniecie ) % 256;
  
                    cout << "\nTekst zaszyfrowany: ";
                    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_GREEN | FOREGROUND_INTENSITY );
                    cout << zaszyfrowany;
               }
               break;

               case 2:
               {
                    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_RED | FOREGROUND_INTENSITY );
                    cout << "Opcja niedostepna.\n";
               }
               break;

               default:
               {
                    SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), FOREGROUND_RED | FOREGROUND_INTENSITY );
                    cout << "Nie ma polecenia o takim numerze.\n";
               }
          }

          getch();
          return 0;
     }

=3

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...