Форум: Форум C++Разное
Новые темы: 00
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: cin.getline не срабатывает

Сообщения:  [1-4] 

 
 автор: StarWorm   (17.11.2008 в 03:07)   письмо автору
 
   для: AlMag   (15.11.2008 в 23:08)
 

Ого... Спасибо! :)
А то я недавно как раз долго не знал что и предпринять... Весь инет облазил, но так и не понял!
Проблема была в том, что после
cin>>variable

у меня не работала
cin.getline(str,255)


Хотя то же самое происходило и со
scanf(...)

если после него было что то наподобие
gets(...)


Но если их поменять местами, то все работало нормально...
Теперь все решено! Еще раз спасибо! xD RESPECT

  Ответить  
 
 автор: AlMag   (15.11.2008 в 23:08)   письмо автору
 
   для: shtirlitz   (15.11.2008 в 11:59)
 

спасибо за информацю

  Ответить  
 
 автор: shtirlitz   (15.11.2008 в 11:59)   письмо автору
 
   для: shtirlitz   (15.11.2008 в 11:10)
 

проблема решена,
спасибо за внимание,
если у кого, такая же проблема, то перед строкой, где не срабатывает cin.getline
вставьте следующий код:

cin.ignore(); 


и будет вам счастье!

  Ответить  
 
 автор: shtirlitz   (15.11.2008 в 11:10)   письмо автору
 
 

Всем привет!
Ситуация следующая, не срабатывает cin.getline, т.е. программа вместо того чтобы остановится, для ввода данных, просто переходит на следующую строку.
Но если убрать строки
cin.getline(q,2);
p=q[0]-'0';

и поставить

for (i=0; i<25; i++)
{
         if (key[0]==Alfa[i]) {p=i; break;}
}


т.е.определить p по некоторой формуле то все нормально работает.
Вопрос, как сделать так чтобы после ручнного ввода числа, cin.getline работал?
вся программа (шифрования цезаря с ключом) приведена ниже

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

char bufRus[256];
charRus(const char* text);

charRus(const char* text)
{
      CharToOem(text, bufRus);
      return bufRus;
}
main()
{
char Alfa[25]={'a''b''c''d''e''f''g''h''i''j''k''l''m''o''p''q''r''s''t''u''v''w''x''y''z'} ;
char beta[25];
char key[25];
int k;
int p;
char q[2]; 
char A[1000];
int i=0, j=0, z=0;


cout<<Rus("Введите ключ:")<<endl;
cin.getline(key, 25);
//определение длины ключа
for (i=0; i<25; i++)
{
if (key[i]=='\0') {k=i; break;}
}
//вводим позицию начала записи ключа
cout<<Rus("Введите p: ")<<endl;

cin.getline(q,2);
p=q[0]-'0';

//определение позиции начала записи ключа

// for (i=0; i<25; i++)
// {
// if (key[0]==Alfa[i]) {p=i; break;}
// }

//записываем ключ в новый массив
for (i=p, j=0; i<p+k; i++, j++)
{
beta[i]=key[j];
}

//заполнение шифрованного масива остальными буквами после конца ключа
for (i=p+k, j=0; i<25; i++, j++)
{
for (z=0; z<k; z++)
if (Alfa[j]==key[z]) {j++; z=0;}
beta[i]=Alfa[j];
}

//заполнение шифрованного массива перед началом ключа
for (i=0, j=j-1; i<p; i++, j++)
{
for (z=0; z<k; z++)
if (Alfa[j]==key[z]) {j++; z=0;}
beta[i]=Alfa[j];
}

for (i=0; i<25; i++)
cout<<Alfa[i]<<" ";

cout<<endl;

for (i=0; i<25; i++)
cout<<beta[i]<<" ";
cout<<endl;

cout<<Rus("Введите строку для шифрования:")<<endl;

cin.getline(A,1000);

cout<<Rus("Зашифрованный текст")<<endl;
for (i=0; i<1000; i++)
{
if (A[i]=='\0'break;
if (A[i]==' 'continue;
for (j=0; j<25; j++)
{
if (A[i]==Alfa[j])
{
A[i]=beta[j];break;
}
}
}
for (i=0; i<1000; i++)
{
if (A[i]=='\0'break;
cout<<A[i];
}
cout<<endl;
return 0;
}

  Ответить  

Сообщения:  [1-4] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования