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

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

Восстановить пароль Регистрация
 
Карандаша
 Аватар для Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 18:38     Ввод из файла (Pascal -> C++) #1
Помогите пожалуйста переписать с 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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++

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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++)
Ответ Создать тему
Опции темы

Текущее время: 08:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru