Среда, 24 Апреля 2024, 02:48

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Эккель. Философия С++ (2 Глава, 7 Задание)
Эккель. Философия С++
vasua99Дата: Воскресенье, 07 Октября 2012, 18:12 | Сообщение # 1
GNU follower
Сейчас нет на сайте
Помогите решить, вот само задание:

Выводите содержимое файла по строкам.
После вывода каждой строки программа должна ждать,
пока пользователь нажмет клавишу Enter

Мое решение, которое не работает(ошибка скорее всего в сравнение символа с кодом Enter'а'):

Code

// Вывод файла по строчкам - после каждой требуется нажатие enter
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
  string line;
  char ch;
  ifstream in("outfile.cpp");
  while(in >> line) {
   cout << line;
   cin >> ch;
   while(ch != char(13)) cin >> ch; // 13 - ASCII код Enter
  }
  return 0;
}
cry


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
Andrey_MДата: Воскресенье, 07 Октября 2012, 18:54 | Сообщение # 2
старожил
Сейчас нет на сайте
Quote (vasua99)
int main() {
string line;


Вроде { должно быть на новой строке после ().


ЪЪЪЪ! Лучшая благодарность - плюс в репутацию :-)
vasua99Дата: Воскресенье, 07 Октября 2012, 19:05 | Сообщение # 3
GNU follower
Сейчас нет на сайте
ну это уже личные предпочтения)

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
MontegДата: Воскресенье, 07 Октября 2012, 19:25 | Сообщение # 4
участник
Сейчас нет на сайте
vasua99, Используй _getch() из conio.h
vasua99Дата: Воскресенье, 07 Октября 2012, 19:28 | Сообщение # 5
GNU follower
Сейчас нет на сайте
а если обойтись C++ стандартной билиотекой? - на момент где задана эта задача - эта функция не изучена еще.

Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
LevriteДата: Воскресенье, 07 Октября 2012, 19:48 | Сообщение # 6
участник
Сейчас нет на сайте
Code
#include <iostream>
#include <fstream>
#include <string>
#include <stdio.h>
#include <conio.h>
using namespace std;
int main() {
string line;
int ch;

ifstream in("c:/stand.txt");
setlocale (LC_ALL, "Russian");
while(in >> line) {
ch = getchar();
cout << line;
while(ch != 10) ;
}
getch ();
}

Промучался минут 20 наверное, 10 ACII код enter в VS 2010. Правда одно но: у меня выводит каждое слово одной строчкой из моего txt файла.




Сообщение отредактировал Levrite - Воскресенье, 07 Октября 2012, 19:49
МаркерДата: Воскресенье, 07 Октября 2012, 19:49 | Сообщение # 7
Я таки выше этого
Сейчас нет на сайте
До чего дожили: задачи из учебников просят им решить. А смысл от этого? Если своим мозгом подумать не суждено, так и программистом стать тоже.


Я не понял смысл твоего поста, поэтому он автоматически может считаться оффтопом.
Андрей, 14 лет
Если ты ничего не понимаешь в игрострое, то тебе нечего делать на курсах программистов.
Андрей, 14 лет
RUNGOGET2THECHOPAHДата: Воскресенье, 07 Октября 2012, 19:53 | Сообщение # 8
участник
Сейчас нет на сайте
Quote (Levrite)
у меня выводит каждое слово одной строчкой из моего txt файла.

in.getline(line, 100);
LevriteДата: Воскресенье, 07 Октября 2012, 19:59 | Сообщение # 9
участник
Сейчас нет на сайте
Quote (RUNGOGET2THECHOPAH)
in.getline(line, 100);

error C2664: std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_Elem *,std::streamsize): невозможно преобразовать параметр 1 из "std::string" в "char *" c:\users\michael\documents\visual studio 2010\projects\help1\help1\123.cpp 12 1 help1


RUNGOGET2THECHOPAHДата: Воскресенье, 07 Октября 2012, 20:04 | Сообщение # 10
участник
Сейчас нет на сайте
Levrite,
Code

#include <iostream>
#include <fstream>
#define BUFSIZE 100
using namespace std;

void main()  
{
  fstream file;
  char line[BUFSIZE];
  file.open("outfile.txt");
  while (!file.eof())
  {
   file.getline(line, BUFSIZE);
   cout<<line<<endl;
   //тут ололо-проверка нажатия Enter
  }
  file.close();
}  
vasua99Дата: Воскресенье, 07 Октября 2012, 21:00 | Сообщение # 11
GNU follower
Сейчас нет на сайте
Для проверки написал тест-программу которая выводит код символа, но при нажатии enter ничего не выводится, почему?(Fedora 17 Xfce, Xfce Terminal Emulator 0.4.8)

Code

// Вывод файла по строчкам - после каждой требуется нажатие enter
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
  //~ string line;
  char chs[2];
  cin >> chs;
  cout << static_cast<int>(chs[0]) << " " << static_cast<int>(chs[1]) << "\n";
  //~ ifstream in("outfile.cpp");
  //~ while(in >> line) {
   //~ cout << line;
   //~ cin >> ch;
   //~ while(ch != char(13)) cin >> ch; // 13 - ASCII код Enter
  //~ }
  return 0;
}

Добавлено (07.10.2012, 21:00)
---------------------------------------------
хотя нет, getchar() выдал 10 10, сейчас проверю)


Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
LevriteДата: Воскресенье, 07 Октября 2012, 21:02 | Сообщение # 12
участник
Сейчас нет на сайте
Code
#include <stdio.h>
int main ()
{
     int ch;
     do {   
        ch = getchar();
         printf ("Вы нажали %c. ASCII код = %d\n", ch, ch);
      } while (ch != 27);
}

Копипаст
Клац




Сообщение отредактировал Levrite - Воскресенье, 07 Октября 2012, 21:02
vasua99Дата: Воскресенье, 07 Октября 2012, 21:03 | Сообщение # 13
GNU follower
Сейчас нет на сайте
Разобрался, все работает))

Code

// Вывод файла по строчкам - после каждой требуется нажатие enter
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main() {
  string line;
  int ch;
  ifstream in("outfile.cpp");
  while(getline(in, line)) {
   cout << line;
   while((ch = getchar()) != 10);
  }
  return 0;
}



Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
Форум игроделов » Программирование » C/C++ » Эккель. Философия С++ (2 Глава, 7 Задание)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг