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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
_д_м_и_т_р_и_й_
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 35
#1

файл целых чисел - C++

21.08.2011, 19:31. Просмотров 850. Ответов 12
Метки нет (Все метки)

Дан файл целых чисел. Нулевых компонентов файле нет. Число отрицательных компонентов равно числу полжительных. Преобразовать файл таким образом, чтобы сначала были положительные числа, а затем отрицательные. Порядок следования как положительных, так и отрицательных чисел сохранить.
Буду признателен если поможете сделать это на Си. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2011, 19:31     файл целых чисел
Посмотрите здесь:

Создать файл целых чисел содержащий сумму чисел из каждой строки исходной таблицы - C++
: Дан текстовый файл, содержащий таблицу из трех столбцов целых чисел. В начале и в конце каждой строки таблицы, а также между ее столбцами...

Составить программу, которая формирует файл целых чисел, получаемых с помощью датчика случайных чисел - C++
Блин, братва!!!!=) Последняя работа в этом году, а сдать нужно до субботы, помогите пожалуйста!!!! Задание 1. Составить...

Дан файл целых чисел. айти среди этих чисел те, что больше за среднее арифметическое суммы всех элементов - C++
дано файл целых чисел A1,....,An, которые упорядочены за спаданием. Найти среди этих чисел те , что больше за среднее арифметическое...

Задан файл из целых чисел со знаком, разделенных пробелом. Произвести чтение этих чисел в обратном порядке, не читая предыдущие. - C++
Есть множество задач анализа данных, записанных в файле, которые можно решить за "линию", не обязательно, сохраняя данные в оперативную...

Файл целых чисел - C++
В файле целых чисел заменить все значения равные максимальному нулевыми значениями.

Дан файл целых чисел - C++
Дан файл целых чисел. Удвоить его размер, записав в конец файла все его исходные элементы (в обратном порядке).

Сформировать файл целых чисел - C++
составить програму,которая формирует файлцелых чисел,получаемых с помощу датчика случайных чисел

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dr.curse
386 / 342 / 16
Регистрация: 11.10.2010
Сообщений: 1,907
21.08.2011, 19:42     файл целых чисел #2
должно работать
C++
1
2
3
4
for (int i=0;i<n;i++)
    if (a[i]>0) cout << a[i] << endl;
for (int i=0;i<n;i++)
    if (a[i]<0) cout << a[i] << endl;
а массив чисел а n размер массива.
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 20:51     файл целых чисел #3
Цитата Сообщение от _д_м_и_т_р_и_й_ Посмотреть сообщение
Дан файл целых чисел...
А вы не бизнесом случаем занимаетесь? Мы вам решаем, а вы потом все сплавляете. Ну как так, где ваши наработки? А мы поможем
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.08.2011, 21:03     файл целых чисел #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <vector>
#include <algorithm>
#include <iterator>
bool is_positive( int n ) { return n > 0; }
bool is_negative( int n ) { return n < 0; }
int main(){
    std::fstream file("input.txt", std::ios::in);
    std::vector<int> arr;
    std::copy( std::istream_iterator<int> (file), std::istream_iterator<int> (), std::back_inserter(arr) );
    file.close();
    file.open("input.txt", std::fstream::out);
    std::remove_copy_if(arr.begin(), arr.end(), std::ostream_iterator<int> (file, " "), is_positive);
    std::remove_copy_if(arr.begin(), arr.end(), std::ostream_iterator<int> (file, " "), is_negative);
}
Код
diagon@shadeware:~$ cat input.txt && ./a.out && cat input.txt
1 -2 3 -4 5 -6 7
-2 -4 -6 1 3 5 7 
diagon@shadeware:~$
Тьфу, у меня сначала отрицательные идут, затем положительные...
Поменяйте 14 и 15 строчки =)
Ай, на си же... Извиняюсь.
_д_м_и_т_р_и_й_
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 35
21.08.2011, 21:08  [ТС]     файл целых чисел #5
нет, я просто студент, с небольшей задолжностью по программированию, извините что обращаюсь, просто сроки поджимают, поэтому пока разбираюсь с одним, хотелось найти решение другого задания. еще раз приношу свои извинения за то что прошу вашей помощи.
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.08.2011, 21:23     файл целых чисел #6
На си как-то так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#define MAXSIZE 1024
int main(){
    int arr[MAXSIZE];
    FILE *file = fopen("input.txt", "r");
    int i = 0;
    while ( fscanf(file, "%d", &arr[i++] ) != EOF );
    file = fopen("input.txt", "w");
    for (int j = 0; j < i; ++j)
        if (arr[j] > 0)
            fprintf(file, "%d ", arr[j]);
    for (int j = 0; j < i; ++j)
        if (arr[j] < 0)
        fprintf(file, "%d ", arr[j]);
        
}
Bash
1
2
3
diagon@shadeware:~$ cat input.txt && ./a.out && cat input.txt
1 -2 3 -4 5 -6 7
1 3 5 7 -2 -4 -6
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 21:41     файл целых чисел #7
вариант без массивов:

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>
 
int Transform(char *fname)
{
   FILE *f, *g;
   char tmpname[300];
   int x;
   tmpnam(tmpname);
   rename(fname, tmpname);
   if ((f = fopen(tmpname, "rt")) == NULL)
      return 1;
   if ((g = fopen(fname, "wt")) == NULL)
      return 1;
   while (fscanf(f, "%d", &x) != EOF)
      if (x > 0)
         fprintf(g, "%d ", x);
   rewind(f);
   while (fscanf(f, "%d", &x) != EOF)
      if (x < 0)
         fprintf(g, "%d ", x);
  fclose(f);
  fclose(g);
  remove(tmpname);
  return 0;
}
 
int main()
{
   Transform("c:\\a.txt");
   return 0;
}
Добавлено через 4 минуты
Diagon, не забывайте потоки закрывать. Это ОЧЕНЬ важно!
diagon
Higher
1927 / 1193 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
21.08.2011, 21:46     файл целых чисел #8
Цитата Сообщение от Olga_ Посмотреть сообщение
Diagon, не забывайте потоки закрывать. Это ОЧЕНЬ важно!
А зачем их закрывать в данном случае?
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 21:49     файл целых чисел #9
Цитата Сообщение от diagon Посмотреть сообщение
А зачем их закрывать в данном случае?
Сложится у вас привычка и потом в других задачах вы вдруг обнаружите, что в файл не все записалось. Все же это признак хорошего тона, когда всегда потоки закрываются.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
21.08.2011, 21:52     файл целых чисел #10
Особо занудные могут ещё сказать, что потоки (Си) не только закрывать надо, но ещё и проверять значение, возвращаемое fclose(). Сам я этого никогда не делаю, но только тссс!
-=ЮрА=-
Заблокирован
Автор FAQ
21.08.2011, 21:55     файл целых чисел #11
Вот моя реализация, я расширил в файле числа могут быть дабл, алгоритм оттестирован и полностью работоспособен!Выполнял в функциях Си
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
#include <windows.h>//malloc, realloc
#include <stdlib.h> //atof
#include <stdio.h>  //printf, FILE
#include <conio.h>  //getch
 
int main()
{
    long n,i;
    FILE * f;
    char * str,*buf;
    double * mass = (double *)malloc(sizeof(double));
    if(!(f = fopen("data.txt","rb+")))
        printf("ERROR ACCESS to READ [data.txt]\r\n");
    else
    {
        fseek(f,0,SEEK_END);
        n = ftell(f);
        fseek(f,0,SEEK_SET);
        if(!(str = (char *)malloc(n + 1)))
            printf("ERROR ALLOCATION MEMORY\r\n");
        else
        {
            fread(str,1,n,f);
            fclose(f);
            str[n] = '\0';
            n = 0;
            buf = strtok(str," ,\n");//Числа могут идти через пробел, запятую или с новой строки
            while(buf)
            {
                mass[n] = atof(buf);
                buf = strtok(NULL," ,\n");
                mass = (double *)realloc(
                    (void *)mass,
                    (1 + (n = n + 1))*sizeof(double));
            }
            free(str);//Чистим память
            if(!(f = fopen("data.txt","w")))
                printf("ERROR ACCESS to WRITE [data.txt]\r\n");
            else
            {
                for(i = 0; i < n; i++)
                {
                    if(mass[i] < 0)
                    {
                        fprintf(f,"%.3f ",mass[i]);//Точность вывода 3 знака после запятой
                        printf("%.3f ",mass[i]);
                    }
                }
                for(i = 0; i < n; i++)
                {
                    if(0 <= mass[i])
                    {
                        fprintf(f,"%.3f ",mass[i]);//Точность вывода 3 знака после запятой
                        printf("%.3f ",mass[i]);
                    }
                }
                printf("\r\nWRITING DATA IN [data.txt] DONE\r\n");
            }
        }
        fclose(f);
    }
    printf("Press any key to continue\r\n");
    getch();
    return 0;
}
Вложения
Тип файла: txt data.txt (15.5 Кб, 9 просмотров)
_д_м_и_т_р_и_й_
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 35
21.08.2011, 21:55  [ТС]     файл целых чисел #12
огромное спасибо за помощь, извините что отвлекаю своими заданиями. и еще вопрос, почему у вас статус "нарушитель"?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.08.2011, 21:59     файл целых чисел
Еще ссылки по теме:

Типизированый файл целых чисел - C++
задание:Создать файл (файлы) целых чисел (Задание 1). Разработать программу обработки файла (Задание 2). Задание 2 Определить,...

Записать в двоичный файл n случайных целых чисел - C++
записать в двоичный файл n случайных целых чисел, принадлежащих отрезку , в текстовый файл записать случайные целые числа, принадлежащие...

Создать файл и записать в него n целых чисел - C++
Создать файл и записать в него n целых чисел. Найти среднее арифметическое среди нечетных чисел, расположенных после минимального значения,...

Создать файл, в который записать n целых чисел - C++
Создать файл, куда записать n целых чисел. Из файла создать массив, в котором поменять местами максимальное среди отрицательных и ...

Создать файл состоящий из n целых чисел (прокомментировать код) - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main () { ofstream out (&quot;f.dat&quot;, ios::binary); int n; ...


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

Или воспользуйтесь поиском по форуму:
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
21.08.2011, 21:59     файл целых чисел #13
Цитата Сообщение от grizlik78 Посмотреть сообщение
Особо занудные могут ещё сказать, что потоки (Си) не только закрывать надо, но ещё и проверять значение, возвращаемое fclose().
Пока это учебные задачи, а так, конечно, надо. Но, как минимум, без fclose() никуда (или fflush()).

Добавлено через 3 минуты
Цитата Сообщение от _д_м_и_т_р_и_й_ Посмотреть сообщение
огромное спасибо за помощь, извините что отвлекаю своими заданиями. и еще вопрос, почему у вас статус "нарушитель"?
Во первых, ничего страшного, еще бы вы это освоили, было бы здорово, в таком случае помочь одно удовольствие.
А "нарушитель" за желание помочь - ссылки на хорошие книги выкладывала, а, оказалось, так нельзя
Yandex
Объявления
21.08.2011, 21:59     файл целых чисел
Ответ Создать тему
Опции темы

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