Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
ensoleille
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 34
1

Удалить из файла отрицательные элементы

10.07.2011, 21:44. Просмотров 1879. Ответов 6
Метки нет (Все метки)

Дан файл целых чисел.Удалить из него отрицательные элементы
собственно делаю 2мя способами.1й:
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
/*Äàí ôàéë öåëûõ ÷èñåë. 
Óäàëèòü èç íåãî âñå îòðèöàòåëüíûå ÷èñëà.*/
 
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
 
void main()
{
    
    FILE *out;
 
    int *a,i,m,k;
 
    out=fopen("out.txt","w+");
 
    if(!(out=fopen("out.txt","w+")))
    {
        printf("FILE NOT OPEN");
        return;
 
    }
    
    puts("Vvedite kolichestvo elementov - m");
    scanf("%d",&m);
    //fscanf(out,"%d\n",&m);
    fprintf(out,"Kolichestvo elementov -  %d",m);
 
    a=(int*)malloc(m*sizeof(int));
        for(i=0;i<m;i++)
        {   
            a[i]=rand()%10-1;
            //fscanf(out,"%d\n",a[i]);
            //fclose(out);
        }
        puts("\n");
            for(i=0;i<m;i++)
                {
                    printf("% 4d",a[i]);
                    fprintf(out,"\n%4d\n",a[i]);
                }
                puts("\n");
    
        k=0;
    for(i=0;i<m;i++)
        {
            if(a[i]>=0)
        
            a[k++]=a[i];
    }/*k++;*/printf("Noviy");
            for(i=0;i<k;i++)
            printf(" %d",a[i]);
            fprintf(out,"\nNoviy massiv %d",a[k]);
    
 
    fclose(out);
}
так работает
2й.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
   FILE * in  = fopen("in.txt", "r+");
 
    int k=0,n,i;
 
    while(fscanf(in, "%f", &n) != EOF)
    {if(n>=0)
    n=k;
    k++;
    }
    fprintf(in,"\nelementi = %f\n\n", k);
   fclose(in);
 
   printf("elementi = %f\n", n);
 
   getch();
}
не работает. ошибок не выдает ,но не запускается
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2011, 21:44
Ответы с готовыми решениями:

Удалить отрицательные элементы
Дана последовательность из n целых элементов. Удалить из нее все отрицательные элементы , затем...

Удалить из массива отрицательные элементы
Помогите пожалуйста, сломал голову, надо удалить из массива все отрицательные элементы,...

Удалить отрицательные элементы массива
Дан массив, найти максимальный, минимальный элементы и их индексы. Удалить отрицательные элементы...

Удалить из однонаправленного списка отрицательные элементы
Создать список из случайных положительных и отрицательных целых чисел (от –10 до 10) и удалить из...

6
Jupiter
Каратель
Эксперт С++
6585 / 4006 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.07.2011, 22:01 2
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
#include <stdio.h>
#include <stdlib.h>
 
int main() 
{
    FILE* file = fopen("1.txt", "r");
    if (file == NULL)
        fprintf(stderr, "Cannot open file");
    int size, i;
    fscanf(file, "%d", &size); //1-й элемент файла - количество элементов в массиве
    int* arr = (int*)malloc(size * sizeof(int));
    for (i = 0; i < size; ++i)
    {
        fscanf(file, "%d", &arr[i]);
    }
    fflush(file);
    fclose(file);
 
    file = fopen("1.txt", "w");
    if (file == NULL)
        fprintf(stderr, "Cannot write file");
    fprintf(file, "%d ", size);
    for (i = 0; i < size; ++i)
    {
        if (arr[i] > 0)
            fprintf(file, "%d ", arr[i]);
    }
    fclose(file);
    free(arr);
    return 0;
}
1
ensoleille
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 34
11.07.2011, 00:33  [ТС] 3
а еще,как удалить элементы с четными номерами? именно с номерами.
0
Jupiter
Каратель
Эксперт С++
6585 / 4006 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.07.2011, 00:35 4
точно так же, условие в цикле записи поменяй
0
ensoleille
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 34
11.07.2011, 00:40  [ТС] 5
вот с условием и проблемма,когда пишу что i%2==0 это же просто найдет четный элемент
0
Jupiter
Каратель
Эксперт С++
6585 / 4006 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.07.2011, 00:53 6
Цитата Сообщение от ensoleille Посмотреть сообщение
это же просто найдет четный элемент
элемент на четной позиции, а четность самого элемента arr[i] % 2 == 0
0
ensoleille
0 / 0 / 0
Регистрация: 16.01.2011
Сообщений: 34
11.07.2011, 00:56  [ТС] 7
спасибо
0
11.07.2011, 00:56
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2011, 00:56

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Удалить из списка все отрицательные элементы
Добрый день, получилось создать список, но не получается сделать удаления. То есть по условию мне...

Нужно из файла удалить все отрицательные элементы
нужно из файла удалить все отрицательные элементы затрудняюсь именно с этим. точнее читал что...

Сформировать два файла из некоторых чисел. Записать в третий файл положительные элементы второго файла и отрицательные элементы первого
Сформировать два файла из некоторых чисел. Записать в третий файл положительные элементы второго...

Отрицательные элементы очереди удалить, а все элементы отрезка [0; 10] продублировать
Создать однонаправленную очередь целых чисел. Распечатать. Отрицательные удалить, а все элементы...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.