adnankhanalll Ответов: 2

Как сравнить два файла и найти недостающие числа?


У меня есть два файла,которые содержат информацию об идентификаторах,позициях X,Y, Z. В файле 2 некоторые данные отсутствуют, когда я сравниваю их с файлом 1. Я хочу получить информацию о недостающих данных в качестве выходных данных при сравнении этих двух файлов.




Файл1
ID X Y Z
28 0.66366 0.54321 1.12534
50 0.63092 0.62145 2.13254
200 0.64753 0.75214 2.51234
350 0.52705 0.81234 2.81427
540 0.76008 0.85125 3.51246
600 0.53292 0.95426 3.82145


Файл2
ID X Y Z
28 0.66366 0.54321 1.12534
50 0.63092 0.62145 2.13254
350 0.52705 0.81234 2.81427
540 0.76008 0.85125 3.51246

Что я уже пробовал:

Я более склонен к языку программирования Си. Я не знаю, как написать код для этой проблемы.

2 Ответов

Рейтинг:
1

OriginalGriff

Это твое домашнее задание, так что никакого кода!

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


adnankhanalll

Это не домашнее задание, и я не школьник. Я работаю в лаборатории для получения степени магистра. У меня есть некоторые данные из моего эксперимента. Я студент-биолог и не знаком с кодированием на языке Си. Если я смогу написать этот код, это сэкономит много времени. Пожалуйста, помогите мне решить эту проблему. Спасибо

adnankhanalll

#включить "math.h"
#включить "string.h"
#включить "stdlib.h"
#включить "stdio.h"

тап_п() {

int i,j;
const int n1 = 50;
двойной array1[n1][4],array2[n1][4], temp1;
Файл *fп1, *FP2 и, *FP3 на;

fp1=fopen("input1.txt","Р");
fp2=fopen("input2.txt","Р");
fp3=fopen("output1.txt","Р");
fprintf(fpout,"ID x y z\n");

adnankhanalll

Как двигаться вперед, чтобы закончить код для моей проблемы.

OriginalGriff

Почему вы прочитали три файла, когда ваш вопрос касается только двух?
Кроме того, посмотрите на псевдокод в ответе - он говорит вам, что делать!

adnankhanalll

Есть ли какой - нибудь пример программы на языке Си для этой задачи? Я постараюсь изменить его в соответствии с моей проблемой.

adnankhanalll

Как я уже говорил, я не изучаю компьютерные науки. Я пытаюсь решить свою проблему с помощью C. Я учусь С. Но все же я не очень хорошо знаком с С. Я знаю, что это простой код, но для меня это занимает много времени. Я нахожу этот форум для помощи в решении проблемы кодирования на языке Си. Любая помощь для моей проблемы сэкономит много времени. Спасибо

OriginalGriff

Да, но ты не просишь о помощи - ты просишь нас сделать это за тебя, а это совсем другое. Я ценю, что вы не CS, но если это часть ваших мастеров, то вы можете ожидать, что вам придется использовать его в своей работе "реального мира", когда вы уйдете - и заставить других делать вашу работу за вас все время не будет работать тогда.

Зачем выбирать с? Это не "удобный для пользователя" язык для начала - я бы предложил C#, который предоставляет гораздо больше возможностей и в целом облегчает вашу жизнь.

adnankhanalll

Спасибо за ваши предложения и комплименты. Я постараюсь решить свою проблему.

Рейтинг:
0

Jochen Arndt

Если вы просто хотите проверить наличие различий вы можете использовать существующий инструмент:
ГНУ разница польза (diff(1) - Страница руководства Linux[^]).

При работе с Windows вы можете установить Собственные порты Win32 некоторых утилит GNU[^] который содержит в себе разница польза.