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

generate() и equal() - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа, которая строит квадратную матрицу и переставляет её блоки по условию http://www.cyberforum.ru/cpp-beginners/thread254015.html
Составить программу, которая строит квадратную матрицу случайных целых чисел (размером 2n × 2n), выводит ее на экран. А затем поменять местами блоки размером n × n, (все сместить на 1 блок в...
C++ Создать квадратную матрицу Составить и отладить программу, которая создает (в памяти ЭВМ) квадратную матрицу порядка n (n задавать константой). http://www.cyberforum.ru/cpp-beginners/thread254014.html
Составить программу, которая образует матрицу (n × n) C++
Составить программу, которая образует матрицу (n × n) случайных вещественных чисел, находит наибольшее значение среди элементов заштрихованной части матрицы и наименьшее - в незаштрихований и выводит...
Вывод названия переменной C++
Решаю дифференциальные уравнения, много уравнений. Использую для вывода результатов отдельно написанную функцию, поэтому необходимо выводить названия переменных и названия массивов. Вообще в самом...
C++ получение окружения из psp http://www.cyberforum.ru/cpp-beginners/thread253998.html
Добрый день, насколько я знаю, что с помощью ассемблера я могу из psp получить служебную информацию о программе, но как это сделать с помощью языков высокого уровня, так как ассемблер я не знаю(
C++ Sizeof и структура с int Привет! Пишу программу для микроконтроллера на Си и под комп на С++. В обеих программах есть такой код: struct { unsigned char adc_data; // 1 byte short int res; // 2 byte } Mod; // 1 + 2... подробнее

Показать сообщение отдельно
Gordex
0 / 0 / 0
Регистрация: 08.03.2011
Сообщений: 7

generate() и equal() - C++

08.03.2011, 23:39. Просмотров 2028. Ответов 12
Метки (Все метки)

доброго всем времени суток!
взялся помочь знакомому решить задачу на с++, но видимо немного не рассчитал свой уровень.
задача- реализовать чтение строк из двух файлов и вывести строки, которые встречаются в обоих файлах (совпадающие). это я сделал, однако обязательное условие задачи- использовать generate() и equal(). по generate я нашёл слишком мало информации, что бы разобраться. а то, что я нашёл об equal подсказывает мне, что нужно было работать с векторами, а не с динамическими массивами.
вот код:
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream> //потоки ввода- вывода
#include <fstream> 
//#include <algorithm> //для generate
#include <string>
#include <conio.h>//для getch
//#include <vector>
 
using namespace std; //пространство имён 
/*--------функция определения количества строк в файле----------------------*/
int CountStrings(istream& is)
{
  if (!is.good())
     return 0;
 
  string s;
  int nStrings = 0;
  while ( std::getline(is, s))
      ++nStrings;
 
  return nStrings;
}
/*-----------------------------*/
 
void main()
{
    /*определяем количество строк в файлах, создаем динамические массивы для каждого из файлов.*/
    ifstream input_file1("1.txt");
    ifstream input_file2("2.txt");
    int num1 = CountStrings(input_file1); //количество строк в первом файле
    int num2 = CountStrings(input_file2); //кол-во строк во втором файле
    string *arr1 = new string[num1]; //массив первого файла
    string *arr2 = new string[num2]; //массив строк из второго файла
/*теперь считываем информацию из каждого файла построчно в динамический массив*/
    input_file1.close();
    input_file1.open("1.txt");
    input_file2.close();
    input_file2.open("2.txt"); //переоткрыли файл для чтения
    
    string str; //буфер
    int i = 0; //счетчик
    while(getline(input_file1, str)) 
    {
        arr1[i] = str;
        i++;
    }
    input_file1.close();
 
    i = 0; //счетчик
 
    while(getline(input_file2, str)) 
    {
        arr2[i] = str;
        i++;
    }
    input_file2.close();
 
/*начало вывода*/
    for (i=0; i != num1; i++)
        for(int j = 0; j != num2; j++)
            if(arr1[i] == arr2[j])
            {
                cout << arr1[i] << endl;
            }
    getch();
/*конец*/
}
немного некрасиво написано, очень давно работал в студии последний раз.
прав ли я насчёт векторов? и что посоветуете с generate / equal? как мне кажется, в generate нужно считывать строки из файлов, только что-то не получается придумать, как это сделать)

Добавлено через 1 час 16 минут
очень рассчитываю на ваш совет (просто примера применения generate() и equal(), хотя бы отдаленно подходящего к данной ситуации, будет достаточно- я не прошу писать программу за меня).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru