Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 21.09.2020
Сообщений: 23

Получить номер первого элемента, в котором файлы отличаются

12.04.2021, 18:34. Показов 1510. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
2. Даны два файла с одинаковым количеством компонентов, компонентами которых являются
символы. Выяснить, совпадают ли попарно их компоненты. Если нет, получить номер первого
элемента, в котором эти файлы отличаются.
Для работы с файлами необходимо подключить заголовочный файл <fstream>
Файл – именованный набор байтов, который может быть сохранен на некотором накопителе.
Под файлом понимается некоторая последовательность байтов, которая имеет своё, уникальное имя.
Под именем файла понимается не только его название, но и расширение, например: file.txt и file.dat.
Полное имя файлов – это полный адрес к директории файла с указанием имени файла, например:
D:\docs\file.txt
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2021, 18:34
Ответы с готовыми решениями:

Два файла с символами: получить номер первого элемента, в котором эти файлы отличаются
дано два файла с одинаковым количеством компонент, компонентами которого являются символы выяснить совпадают ли попарно их компоненты, если...

Получить порядковый номер первого четного элемента вводимой последовательности
program pro; var N : integer ; ci,i : integer ; c : integer ; A : array of integer; begin randomize; writeln ('Введите N'); ...

Найти номер первого минимального элемента среди элементов, больших Т1 и расположенных правее первого элемента, равного Т
Найти номер первого минимального элемента среди элементов, больших Т1 и расположенных правее первого элемента, равного Т2. не понимаю где...

11
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,239
12.04.2021, 18:54
Лучший ответ Сообщение было отмечено JackDark как решение

Решение

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
#include <fstream>
int main()
{
   ifstream f1("file1.txt");
   ifstream f2("file2.txt");
   if(f1 && f2)
   {
      char c1,c2;
      bool equal=true;
      int number=0;
      while( f1.get(c1) )
      {
          f2.get(c2);
          if(!f2 || c1!=c2)
          {
              equal=false;
              break;
           }
           number++;
       }
       if(equal)
          std::cout<<"Файлы одинаковые";
       else
          std::cout<<"Файлы отличаются в позиции "<< number
                <<"\nc1="<<c1<<" c2="<<c2<<std::endl;
   }else
       std::cout<<"не удалось открыть файл";
   return 0;
}
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.04.2021, 02:21
zss, подскажите зачем записывается это условие: if(!f2
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,239
13.04.2021, 09:01
Цитата Сообщение от zss Посмотреть сообщение
if(f1 && f2)
Проверка, что файлы открылись без ошибок.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.04.2021, 13:25
zss, я насчёт другого условия (из строки 14):
Цитата Сообщение от Yetty Посмотреть сообщение
if(!f2
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,239
13.04.2021, 14:08
Yetty, это проверка выхода за конец второго файла.
Он может кончиться раньше первого.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.04.2021, 14:26
Цитата Сообщение от zss Посмотреть сообщение
Он может кончиться раньше первого
даже если
Цитата Сообщение от JackDark Посмотреть сообщение
Даны два файла с одинаковым количеством компонентов
тоже может закончиться раньше ? почему именно второй файл проверяется ?
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,239
13.04.2021, 14:30
Первый уже проверен оператором while( f1.get(c1) )
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.04.2021, 14:40
zss, Вы так и не ответили на вопрос, если есть два файла с одинаковым количеством элементов один из них может закончиться раньше чем другой ?

Добавлено через 3 минуты
и ещё вопрос так записать можно ?
C++
1
while(f1.get(c1) && f2.get(c2))
если да, лучше с && или так ?
C++
1
while((f1.get(c1)), (f2.get(c2)))
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,239
13.04.2021, 14:45
Теоретически не могут.
Но, мало ли что, лучше на конец файла проверить(например, при вводе в один из файлов в конце случайно записали пробел, которого не видно).

Второй вариант неправильный, результат операции запятая - это результат последнего после запятой операнда, т.е. f2.get(c2).
А результаты до запятой игнорируются.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.04.2021, 14:54
Цитата Сообщение от zss Посмотреть сообщение
результаты до запятой игнорируются
почему в таком случае работает код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <sstream>
using namespace std;
 
int main()
{
    char c1, c2;
    string s1="abc", s2="atc";
    
    stringstream f1(s1);
    stringstream f2(s2);
    
    while((f1.get(c1)), (f2.get(c2)))
    { 
        if(c1==c2) cout << "YES\n";
        else cout << "NO\n";
    }
    
    return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,239
13.04.2021, 14:56
Сделайте первый файл меньше второго и проверьте,
сколько раз выполнится цикл
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.04.2021, 14:56
Помогаю со студенческими работами здесь

Найти номер первого минимального элемента среди элементов, больших Т1 и расположенных правее первого элемента, равного Т
Найти номер первого минимального элемента среди элементов, больших Т1 и расположенных правее первого элемента, равного Т2. Надо...

Найти номер первого минимального элемента среди элементов, больших t1, и расположенных после первого элемента, равного t2
Задан целочисленный одномерный массив a из n элементов. Найти номер первого минимального элемента среди элементов, больших t1, и...

Найти номер первого минимального элемента среди положительных элементов, расположенных до первого элемента, кратного пяти.
Задан целочисленный одномерный массив a из n элементов. Найти номер первого минимального элемента среди положительных элементов,...

Найти номер первого максимального элемента среди отрицательных элементов, расположенных до первого элемента, большего заданного числа Т
Написать собственную функцию для работы с одномерным динамическим массивом, заданным указателем. Алгоритмы решения всех подзадач, включая...

Найти номер первого максимального элемента среди положительных элементов, расположенных до первого элемента, большего заданного числа t
помогите решить и разобраться с условием. Дан целочисленный вектор A(n). Найти номер первого максимального элемента среди положительных...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru