Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Pominięcie tablicy [C++]

Ostatnio zmodyfikowano 2014-06-03 12:09
Autor Wiadomość
BrutalxD
Temat założony przez niniejszego użytkownika
Pominięcie tablicy [C++]
» 2014-06-03 10:28:37
Witam, program nie wczytuje mi zmiennej char klucz2[], na pozór wygląda łatwo, ale nawet po głębszym zastanowieniu, nie mogłem rozwikłać dlaczego nie działa poprawnie.
Oto Kod:
C/C++
#include<iostream>
#include<cmath>
#include<cstring>
#include<conio.h>
using namespace std;

void wypisz( char zdanie[], unsigned granica )
{
    for( unsigned i = 0; i < granica; i++ )
         cout << zdanie[ i ];
   
    cout << endl;
}
int main()
{
    char zdanie[ 5000 ], szyfr[ 5000 ], klucz2[ 500 ];
    unsigned klucz1;
    cin.getline( zdanie, 4999 );
    cout << "Podaj klucz pierwszego szyfrowania (liczba)\n";
    cin >> klucz1;
    wypisz( zdanie, strlen( zdanie ) );
    cout << "Podaj klucz drugiego szyfrowania (wyraz lub zdanie)\n";
    cin.getline( klucz2, 499 );
    wypisz( zdanie, strlen( zdanie ) );
    return 0;
}

P-111342
00Andre
» 2014-06-03 10:52:08
Ponieważ strumień jest zapełniony znakiem nowej lini, więc trzeba go wyczyścić po podaniu klucz1
a Funkcja getline kończy gdy napotka znak nowej Lini !
C/C++
#include<iostream>
#include<cmath>
#include<cstring>
#include<conio.h>
using namespace std;

void wypisz( char zdanie[], unsigned granica )
{
    for( unsigned i = 0; i < granica; i++ )
         cout << zdanie[ i ];
   
    cout << endl;
}
int main()
{
    char zdanie[ 5000 ], szyfr[ 5000 ], klucz2[ 500 ];
    unsigned klucz1;
    cin.getline( zdanie, 4999 );
    cout << "Podaj klucz pierwszego szyfrowania (liczba)\n";
    cin >> klucz1;
    cin.clear();
    cin.sync();
    wypisz( zdanie, strlen( zdanie ) );
    cout << "Podaj klucz drugiego szyfrowania (wyraz lub zdanie)\n";
    cin.getline( klucz2, 499 );
    wypisz( zdanie, strlen( zdanie ) );
    return 0;
}

00Andre
P-111346
BrutalxD
Temat założony przez niniejszego użytkownika
» 2014-06-03 11:05:55
Czyli po podaniu klucz1 i kliknięciu enter wprowadzam znak nowej linii, a następnie zaczyna działać funkcja getline, która się kończy przy spotkaniu nowej linii i dlatego nie daje mi wprowadzać. Dobrze rozumiem?
P-111348
00Andre
» 2014-06-03 11:20:11
Tak dobrze.
P-111349
BrutalxD
Temat założony przez niniejszego użytkownika
» 2014-06-03 12:09:53
Ok, dzięki :)
P-111351
« 1 »
  Strona 1 z 1