• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Работа С Файлами

  • Автор темы vladis222
  • Дата начала
V

vladis222

Дан файл, компонентами которого являются целые числа. Найти сумму и произведение компонент заданного файла,вывести на экран последнюю и предпоследнюю компоненты этого файла, помогите пожалуйста, я не представляю как это написать на С/С++?
 
E

Evgeniy

Написать это весьма просто, собственно похожий пример был в этой теме.
Создаем объект класса ifstream и привязываем его к нашему файлу.
Если количество элементов в файле известно заранее, то все еще проще: переменная - счетчик, которая будет считать количество итераций цикла и в нужное время считывать и выводить последний и предпоследний элемент файла.
Сумма аналогична простому подсчету суммы всех элементов массива. Единственное отличие, что значение нужно брать из файла. Тоже самое и с произведением.

В общем, посмотрите тему, что я вам скинул и попробуйте написать свой код. Если не выйдет отпишитесь в этом же топике и тогда можно будет вам помочь. Иначе это называется сделайте за меня, а не помогите.
 
V

vladis222

Написать это весьма просто, собственно похожий пример был в этой теме.
Создаем объект класса ifstream и привязываем его к нашему файлу.
Если количество элементов в файле известно заранее, то все еще проще: переменная - счетчик, которая будет считать количество итераций цикла и в нужное время считывать и выводить последний и предпоследний элемент файла.
Сумма аналогична простому подсчету суммы всех элементов массива. Единственное отличие, что значение нужно брать из файла. Тоже самое и с произведением.

В общем, посмотрите тему, что я вам скинул и попробуйте написать свой код. Если не выйдет отпишитесь в этом же топике и тогда можно будет вам помочь. Иначе это называется сделайте за меня, а не помогите.

C++:
#include<iostream>
using namespace std;
#include<conio.h>
#include<stdlib.h>
#include<fstream>
const int N=30;
int main()
{
setlocale(LC_ALL,"Rus");
int sum=0;int pr=1;int a;int col=0;
fstream input ("my.txt");
input.open("D:\my.txt");//Путь к файлу
if (!input) {cout << "Файл не открыт.\n"; }
else
if(input)
{
while (!input.eof())
{
input>>a;
sum=sum+a;//Вычисление суммы компонентов файла
pr=pr*a;//Вычисление произведения компонентов файла
col=col+1;
}
cout<<sum<<endl;//Вывод суммы
cout<<pr<<endl;//Вывод произведения
}


Вот написал часть кода, вообщем в а считывается инфа из файла,подсчитывается сумма и произведение компонента,а вот с нахождением последней и предпоследней возникли трудности,не знаю как это реализовать
 
E

Evgeniy

Я это сделал так.
C++:
#include <iostream>
#include <fstream>

using std::cout;
using std::endl;
using std::ifstream;

//const int N=30; 

void main()
{
setlocale(LC_ALL,"Rus");

int sum = 0;
unsigned int pr = 1;
int a;
int col = 0, col1 = 0;
int last_elem = 0;
int penultimate_elem = 0;

ifstream input("my.txt"); //Мой файл лежит в директории проекта
//input.open("D:\my.txt");//Путь к файлу <--- Это здесь не нужно. Было бы логичней его впихнуть в блок проверки открытия файла и если не открылся - открыть этим методом
if (!input)
{
cout << "Файл не открыт.\n";
}

if(input)
{
while(!input.eof()) //Узнаем количество элементов файла
{
input >> a;
col++; //Инкрементируем счетчик. Аналогично записи col = col+1
}
input.seekg(0); // Переводим указатель на начало файла 
while (!input.eof())
{
input >> a;
sum += a; //Вычисление суммы компонентов файла
pr *= a; //Вычисление произведения компонентов файла
col1++; //Инкрементируем счетчик элементов нашего файла
if(col1 == col - 1) //Предпоследний
penultimate_elem = a;
if(col1 == col) //Когда последний элемент
last_elem = a;
}

cout << "Cумма: " << sum << endl;//Вывод суммы
cout << "Произведение: " << pr << endl;//Вывод произведения
cout << "Предпоследний элемент: " << penultimate_elem << endl; //Предпоследний
cout << "Последний элемент: " << last_elem << endl; // Последний
}
std::cin.get(); //Задержка экрана
}
Мой файл был заполнен значениями: 12 22 33 66 5 55 4 6
Для чего вот это //const int N=30; ? Количество элементов файла не фиксировано, нигде в коде не используется, забыли с прошлых попыток удалить?)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!