Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2013, 20:01   #1
Alexandr-
Пользователь
 
Регистрация: 04.03.2013
Сообщений: 79
По умолчанию Повторное вхождение одного и того же числа (C)

Язык СИ.
Не знаю, как написать конечное условие к задачи (где if (a[i])). Помогите кому не сложно. Заранее спасибо.

Сама задача и код:

Дан файл f, компоненты которого являются целыми числами. Получить файл g, образованный из файла f исключением повторных вхождений одного и того же числа.

Код:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(){

int i; int a[100];  
FILE *f,*g; 
if ((f = fopen("f.txt","r"))==NULL) 
printf("Error!");
else
{
g = fopen("g.txt","w");
for(i=0;!feof(f);i++){
fscanf (f,"%d ",&a[i]); if (a[i]) fprintf (g,"%d ",a[i]);
 }}
fclose(f);
fclose(g);
 getch();
 return 0;
}
Alexandr- вне форума Ответить с цитированием
Старый 07.09.2013, 21:27   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

На самом деле это конечное условие и есть суть задачи, так как правильная реализация занимает достаточное место. Вы вводите ограничение в 100 чисел в файле, но никак не ограничиваете ввод. Если рассматривать простейший вариант (достаточно ограниченный в возможностях):
Код:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int
main()
{
    int i, a[100], t;  
    FILE *f, *g; 
    if ((f = fopen("f.txt", "r")) == NULL) 
        printf("Error!");
    else {
        g = fopen("g.txt", "w");
        for (i = 0; i < 100 && !feof(f);) {
            fscanf(f, "%d", &a[i]);
            for (j = t = 0; j < i && t == 0; ++j)
                t = (a[j] == a[i]);
            if (t == 0)
                fprintf(g, "%d ", a[i++]);
        }
        fclose(f);
        fclose(g);
    }
    getch();
    return 0;
}
Код писался прямо в блокноте, так что возможны ошибки.
Кстати, у Вас получается текстовый файл, а не файл целых чисел.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 07.09.2013 в 21:33.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить программу удалив из него повторное вхождение слов. as1212 Помощь студентам 2 10.11.2011 21:16
Повторное вхождение слов as1212 Помощь студентам 1 02.11.2011 20:55
Несколько DLL. Использование одного и того же подуля. Selestis Lazarus, Free Pascal, CodeTyphon 1 07.01.2011 13:25
2 столбец для того, чтобы автоматически создавались числа, которые позволяли уравнивать числа в 3 столбце ppv Microsoft Office Excel 37 05.08.2009 21:19