0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 2

Сделать функции заполнения исходного файла и обработки массива с записью в другой файл

02.04.2015, 12:31. Показов 868. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Требуется: Считать все числа из файла (количество чисел - произвольное) в динамический массив. Выполнить сортировку массива по возрастанию, используя алгоритм сортировки выбором. Полученный результат записать в другой файл. Предусмотреть в программе функции заполнения исходных файлов и обработки массивов с записью в другой файл Определить время работы алгоритма сортировки.
Я тут написал программу без функций но никак не могу разделить её на функции помогите пожалуйста.
C++ (Qt)
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
#include<stdio.h>
#include<stdlib.h>
 
int main()
{
    int k,i,j;
FILE *ptrfile;
k=0;
int s;
ptrfile=fopen("mass.txt","r+"); //считываемый файл
 
while ((fscanf(ptrfile, "%d",&s)!=EOF))
{    if(!ptrfile) break;    //чтобы не делал лишнего
        k+=1;
}
int *c = (int*) malloc(k*sizeof(int));  //создание динамического массива
 
rewind(ptrfile);    //перематываем файл для повторного чтения
for(i=0;i<k;i++)
{
    fscanf(ptrfile, "%d",&c[i]);
    printf("c[%d]=%d  ",i,c[i]);
}
 
for(i=0;i<k;i++)  // сортировка массива по возрастанию (алгоритм сортировки выбором)
    for(j=i+1;j<k;j++)
{
    int a=c[i];
    int b=c[j];
    if (b<a)
    {
        c[i]=b;
        c[j]=a;
    }
}
fclose(ptrfile);// Закрытие считываемого файла
ptrfile=fopen("outmass.txt","w");
for(i=0;i<k;i++)
{
    fprintf(ptrfile, " %d", c[i]);
}
fclose(ptrfile);
free(c); //убираем мусор
 
getchar();  //задержка консоли
}
Добавлено через 8 часов 59 минут
Наконец то разобрался после многочасавого копания в инете. Конечно мог написать как то криво и неэффективно. Если будут какие нибудь предложения по улучшению кода, то смело нажимайте "Ответить" я с удовольствием приму ваши советы. Всем спасибо. Вот собственно и код:
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include<stdio.h>
#include<stdlib.h>
#include <time.h>      
void ishod() // Функция записи в исходный файл
     {            
         int i,x;
         FILE *outfile;
 
 
         srand (time(NULL));
         outfile=fopen("mass.txt","w");
         x= rand() % 15 + 5;
         int *c = (int*) malloc(x*sizeof(int));
         for (i=0; i<x; i++)
            {
             c[i]=rand() % 100 ;
            fprintf(outfile, " %d", c[i]);
            }
            printf("Sozdan ishodnik s massivom:\n");
            for(i=0;i<x;i++)
        {
            printf("c[%d]=%d  ",i,c[i]);
        }
            printf("\n");
         fclose(outfile);
 
         return;
     }
void sosave() //функция сортировки и сохранения в файл
    {
    int k,i,j;
    FILE *ptrfile;
    clock_t time;
    k=0;
    int s;
    ptrfile=fopen("mass.txt","r+"); //открытие файла с исходными данными
 
    while ((fscanf(ptrfile, "%d",&s)!=EOF))
        {    
             if(!ptrfile) break;    //чтобы не делал лишнего
             k+=1;
        }
    int *c = (int*) malloc(k*sizeof(int));  //должен быть динамическим
 
    rewind(ptrfile);    //перематываем файл для повторного чтения
    for(i=0;i<k;i++)
        {
            fscanf(ptrfile, "%d",&c[i]);
        }
    time = clock();
    for(i=0;i<k;i++)
    for(j=i+1;j<k;j++)
    {
        int a=c[i];
        int b=c[j];
        if (b<a)
    {
        c[i]=b;
        c[j]=a;
    }
    }
    time = clock() - time;
    printf("Zatrachennoe vremya na sortirovku=%f",(double)time/CLOCKS_PER_SEC);
    fclose(ptrfile);// Закрытие считываемого файла
    printf("\n");
    printf("--------------------------Otsortirovannyi massiv--------------------------- \n");
    ptrfile=fopen("outmass.txt","w");
    for(i=0;i<k;i++)
    {
    fprintf(ptrfile, " %d", c[i]);
    printf("c[%d]=%d  ",i,c[i]);
    }
    fclose(ptrfile);
    free(c); //убираем мусор, когда уже не нужен (но не раньше =))
 
    }
 
int main()
{
    clock_t time2;
    time2 = clock();
printf("Kursovaya rabota Shaumukhametov A.F.\n");
printf("Startuet funkciya sozdaniyz ishodnika\n");
    ishod();
printf("Dlya prodoljenina najmite lubuyu knopku\n");
    getchar();
printf("Startuet funkciya sortirovki i sohraneniya \n");
    sosave();
    time2 = clock() - time2;
    printf("Zatrachennoe vremya na vsu progu=%f",(double)time2/CLOCKS_PER_SEC);
getchar();  //задержка консоли
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.04.2015, 12:31
Ответы с готовыми решениями:

Из исходного текстового файла все повторяющиеся слова переписать в другой файл удалив их из исходного
из исходного текстового файла все повторяющиеся слова переписать в другой файл удалив их из исходного. Дополнительных массивов не...

Произвести выборку из файла с записью в другой файл
Суть в следующем: Имеется лог файл содержащий информацию в следующем виде дан - какие-то данные строка 1 имеет вид: дан дан дан...

Сортировка элементов файла с записью в другой файл.
Есть файл с целыми числами. Нужно отсортировать значения (не используя массив) в порядке убывания и записать значения в текстовый файл. ...

2
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
02.04.2015, 12:51
Память почему не освобождаешь? В 13-й строке выделил, в конце нужно освободить.
Ну и в целом это в стиле C, который без ++, у тебя сделано.
1
0 / 0 / 0
Регистрация: 02.04.2015
Сообщений: 2
02.04.2015, 13:25  [ТС]
О спасибо большое))) Совсем проморгал)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2015, 13:25
Помогаю со студенческими работами здесь

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

Нужно, чтобы в функции Main файла исходного кода происходил запуск обработки формы
Здравствуйте. Я только начала изучение windows forms и столкнулась со следующей проблемой. Мне нужно, чтобы в функции Main файла...

Дан файл целых чисел. Записать в другой файл те элементы исходного файла, у которых ровно три четных делителя
Помогите найти ошибку, пожалуйста. Если ввести числа 2,4 и 8, выводит 4. А если ввести 8 и 18, то вообще ничего не выводит, хотя эти числа...


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

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

Новые блоги и статьи
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Полностью асинхронный счётчик на логике (сумматорах) трёх состояний и асинхронных регистрах трёх состояний. Структура "электронный Buttom Up"
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
Цепочки методов в C# с Fluent API
UnmanagedCoder 24.04.2025
Современное программирование — это не только решение функциональных задач, но и создание кода, который удобно поддерживать, расширять и читать. Цепочки методов и Fluent-синтаксис в C# стали мощным. . .
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru