Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
#1

Ввод из файла (Pascal -> C++) - C++

22.06.2014, 18:38. Просмотров 298. Ответов 13
Метки нет (Все метки)

Помогите пожалуйста переписать с Pascal на C++ ввод из файла.

Файл примерно такой:
5
1 2 3 4 5
3 5 2

Pascal
1
2
3
4
5
6
7
8
9
Assign(ft,'in.txt');
Reset(ft);
Readln(ft,n);
for i:=1 to n-1 do Read(ft,sekt[i]);
Readln(ft,sekt[n]);
Read(ft,a);
Read(ft,b);
Read(ft,k);
close(ft);
Как эту часть можно переписать на С++?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2014, 18:38     Ввод из файла (Pascal -> C++)
Посмотрите здесь:

C++ ввод из файла
Ввод из файла в массив C++
C++ Ввод массива из файла
Ввод из файла C++
C++ Ввод из файла.
C++ ввод матрицы из файла.
Ввод из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
22.06.2014, 18:46     Ввод из файла (Pascal -> C++) #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
примерно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <fstream>
#include <vector>
 
 
int main() {
   std::ifstream ft("in.txt");  
    
   std::size_t n;
   ft >> n;
 
   std::vector<int> sekt(n);
   for (std::size_t i = 0; i != n; ++i) {
      ft >> sekt[i];
   }
   
   int a;
   ft >> a;
   
   int b;
   ft >> b;
   
   int k;
   ft >> k;
}
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 18:56  [ТС]     Ввод из файла (Pascal -> C++) #3
Большое спасибо!)

Теперь только ругается на вывод в файл...=(
C++
1
cout << a << endl;
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
22.06.2014, 18:59     Ввод из файла (Pascal -> C++) #4
Карандаша, cout и endl определены в пространстве имён std
C++
1
std::cout << a << std::endl;
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 19:09  [ТС]     Ввод из файла (Pascal -> C++) #5
А нужно ли теперь переписывать основную часть программы? ну там std добавлять или еще что...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
do
    {
        v = (a / k) % n;
        if (sekt[v] < sekt[n - v + 1])
        {
            v = n - v + 1;
        }
        if (x < sekt[v])
        {
            x = sekt[v];
            a = a + k;
        }
        
    }
    while(a >= b);
просто она не работает Х) Вылетает... вылетает из-за неправильного алгоритма или из-за того что я не добавила нужное?
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
22.06.2014, 19:25     Ввод из файла (Pascal -> C++) #6
Цитата Сообщение от Карандаша Посмотреть сообщение
sekt[n - v + 1]
Если v < 2, то будет выход за пределы массива.
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 20:45  [ТС]     Ввод из файла (Pascal -> C++) #7
А можно еще вопрос?)
Как мне в переменную x отправить значение 1 ячейки массива sekt?
x = sekt[1]; вылетает на этой строчке
sekt[1] >> x; вообще не работает программа
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
22.06.2014, 21:29     Ввод из файла (Pascal -> C++) #8
Карандаша, в С++ индексация начинается с 0, т.е. первый элемент массива - sekt[0], последний - sekt[n - 1].
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 22:42  [ТС]     Ввод из файла (Pascal -> C++) #9
ну да... с индексацией я запуталась Х)
но дело не в этом...
в любом случае на строчке присваивания программа вылетает...

Точнее нет, не на строчке присваивания, а на строчке когда я начинаю сравнивать
if (x < sekt[v])
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
22.06.2014, 22:58     Ввод из файла (Pascal -> C++) #10
Карандаша, скорее всего выход за границы массива, воспользуйся отладчиком.
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 23:11  [ТС]     Ввод из файла (Pascal -> C++) #11
А все, разобралась) В другом месте забыла исправить n - v + 1 и выход за пределы массива был Х)

Добавлено через 11 минут
gray_fox, а можно еще один последний вопрос?) И программа будет написана Х)
Как отправить в файл выхода?)

У меня получается есть эта строчка в конце
C++
1
std::cout << a << std::endl; // Записываем в фаил
Но ее явно мало... out.txt остается пустым.
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
22.06.2014, 23:16     Ввод из файла (Pascal -> C++) #12
Карандаша, std::cout - это поток вывода, связанный с консолью. Нужен связанный с файлом
C++
1
2
std::ofstream ofs("out.txt");
ofs << a << std::endl;
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 23:25  [ТС]     Ввод из файла (Pascal -> C++) #13
Да, я так пробовала. игнорирует, даже файл не создает если его нету.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2014, 23:33     Ввод из файла (Pascal -> C++)
Еще ссылки по теме:

C++ Ввод из файла
Ввод из файла в вектор C++
C++ Ввод из консоля и файла
C++ Ввод данных из файла
Ввод данных с файла C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
1256 / 1139 / 55
Регистрация: 21.04.2012
Сообщений: 2,361
Завершенные тесты: 3
22.06.2014, 23:33     Ввод из файла (Pascal -> C++) #14
Цитата Сообщение от Карандаша Посмотреть сообщение
Да, я так пробовала. игнорирует, даже файл не создает если его нету.
Либо не там ищешь файл, либо нет прав на запись (что вряд ли). Можно проверить, была ли ошибка при открытии\создании файла так:
C++
1
2
3
if (!ofs) {
    std::cerr << "Can't open a file" << std::endl;  // либо ещё что-то
}
Yandex
Объявления
22.06.2014, 23:33     Ввод из файла (Pascal -> C++)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru