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

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

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

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

22.06.2014, 18:38. Просмотров 306. Ответов 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++
Написал такой метод, но отказывается работать. void file_in(){ freopen("in.txt","r",stdin); cin>>size; ...

ввод из файла - C++
подскажите как делать ввод из файла

Ввод из файла - C++
Есть ввод из файла, но при запуске программы ничего не происходит - черный экран с мигающим курсором ifstream in("D:\file.txt"); ...

Ввод из файла. - C++
дана программа. в ней нужно ввести данные из файла. при выводе их на экран выводит не той кодировкой. помогите поменять. вот код программы:...

Ввод строк с файла - C++
Нужно с файла ввести строки в массив символов char. Как это правильно реализовать, чтобы потом можно было посимвольно перебирать элементы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
22.06.2014, 18:46 #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  [ТС] #3
Большое спасибо!)

Теперь только ругается на вывод в файл...=(
C++
1
cout << a << endl;
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
22.06.2014, 18:59 #4
Карандаша, cout и endl определены в пространстве имён std
C++
1
std::cout << a << std::endl;
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 19:09  [ТС] #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!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
22.06.2014, 19:25 #6
Цитата Сообщение от Карандаша Посмотреть сообщение
sekt[n - v + 1]
Если v < 2, то будет выход за пределы массива.
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 20:45  [ТС] #7
А можно еще вопрос?)
Как мне в переменную x отправить значение 1 ячейки массива sekt?
x = sekt[1]; вылетает на этой строчке
sekt[1] >> x; вообще не работает программа
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
22.06.2014, 21:29 #8
Карандаша, в С++ индексация начинается с 0, т.е. первый элемент массива - sekt[0], последний - sekt[n - 1].
Карандаша
2 / 2 / 0
Регистрация: 23.10.2011
Сообщений: 70
22.06.2014, 22:42  [ТС] #9
ну да... с индексацией я запуталась Х)
но дело не в этом...
в любом случае на строчке присваивания программа вылетает...

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

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

У меня получается есть эта строчка в конце
C++
1
std::cout << a << std::endl; // Записываем в фаил
Но ее явно мало... out.txt остается пустым.
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
22.06.2014, 23:16 #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  [ТС] #13
Да, я так пробовала. игнорирует, даже файл не создает если его нету.
gray_fox
What a waste!
1511 / 1214 / 69
Регистрация: 21.04.2012
Сообщений: 2,550
Завершенные тесты: 3
22.06.2014, 23:33 #14
Цитата Сообщение от Карандаша Посмотреть сообщение
Да, я так пробовала. игнорирует, даже файл не создает если его нету.
Либо не там ищешь файл, либо нет прав на запись (что вряд ли). Можно проверить, была ли ошибка при открытии\создании файла так:
C++
1
2
3
if (!ofs) {
    std::cerr << "Can't open a file" << std::endl;  // либо ещё что-то
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2014, 23:33
Привет! Вот еще темы с ответами:

Ввод из файла с разделителями - C++
Проблема следующая: как ввести из файла произвольное количество целых чисел, между которыми не пробел, а разделитель (например, &quot;.&quot;)? ...

Ввод и вывод из файла - C++
Есть программа. Нужно сделать так, чтобы размерность матрицы можно было считать из файла и чтобы готовую или исходную матрицу можно было...

Ввод\вывод файла - C++
Здравствуйте, уважаемые программисты. Есть проблемка: нужно прочитать из файла текст и вывести его на экран. Пробую через символьный массив...

Ввод из файла не работает - C++
Здравствуйте, помогите пожалуйста решить проблему. Программа должна ввести данные из файла в массив структур. Но до этого дело так и не...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.06.2014, 23:33
Ответ Создать тему
Опции темы

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