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

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

Войти
Регистрация
Восстановить пароль
 
wir_wolf
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
#1

Сортировка Шелла для файла - C++

14.12.2010, 20:20. Просмотров 582. Ответов 6
Метки нет (Все метки)

Сортировка массива методом Шелла
И я вот не как понять не могу что означает сортировка внешнего файла.
Был в гуглятине не раз, но так нечего и не нашел...
Что скажите по этому поводу...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 20:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка Шелла для файла (C++):

Сортировка Шелла и пирамидальная сортировка для символов - C++
Здраствуйте, можете пожалуйста привести пример сортировок шелла и пиромидальной сортировки для символов, а то ничего не могу ...

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется - C++
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Пирамидальная сортировка и сортировка Шелла - C++
Ребята помогите пожалуйста, я NEWBIE и не могу решить такая задача : Выполнить сортировку по убыванию. Пирамидальная сортировка и...

Сортировка Шелла и сортировка вставками - C++
Напишите программу для: 1)Сортировка вставкой 2)сортировка Шелла

Сортировка Шелла - C++
Поделитесь пожалуйста исходником программы которая сортирует одномерный массив методом Шелла, что бы количество и значение элементов...

Сортировка Шелла - C++
Ребят помогите. есть матрица нужно отсортировать каждую строчку матрицы по убыванию алгоритмом Шелла. #include <fstream> #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
14.12.2010, 20:27 #2
Ну типа есть файл D:\Work\my_file.dat с определенной структурой данных, которые нужно отсортировать. Какая структура данных в файле должна быть?
0
wir_wolf
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
14.12.2010, 20:34  [ТС] #3
Не сказано какая структура файлов...
Я написал все задание..
0
wir_wolf
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
24.12.2010, 22:45  [ТС] #4
Я все по тому же поводу, нашел скрипт который создает и читает нужные мне файлы, но вот одного найти не могу.
Есть метод шела сортировка цыфр, но сортировка по тексту я так и не нашел

вот что у меня на данный момент есть
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
93
94
95
96
97
98
99
100
101
#include "stdafx.h"
#include <iostream> 
#include <stdlib.h>
#include <fstream>
using namespace std;
 
//==================Structure===============
struct Shop{
   char *Name;
   char *Marka;
   float Price;   
};
 
//=================Structure initialization===========
Shop init(){
    Shop sp;
    sp.Name=new char[256];
    sp.Marka= new char[256];
    return sp;
}
//======================================
Shop *Zapovnennia(int a)
{ 
 
Shop *Ima1=new Shop[a];
int q=0;
 
for(int i=0;i<a;i++){
q=rand()%60;
 
if((q)>60) Ima1[i].Name="Televizor";
if(q<=60 && q>=30) Ima1[i].Name="Magnitola";
if(q<30 && q>=0) Ima1[i].Name="DVD ";
 
q=rand()%100;
 
 
if((q)>75) Ima1[i].Marka="SONY ";
if(q<=75 && q>=50) Ima1[i].Marka="PHILIPS";
if(q<50 && q>25) Ima1[i].Marka="SAMSUNG";
if(q<=25 && q>=0) Ima1[i].Marka="SHARP ";
 
q=rand()%100;
 
Ima1[i].Price=q*100.2f;
 
 
}
return Ima1;
}
 
void Vuvid(Shop *Ima,int b)
{
for(int i=0;i<b;i++) cout<<i+1<<" "<<Ima[i].Name<<"\t"<<Ima[i].Marka<<"\t\t"<<Ima[i].Price<<"\n";
 
}
 
//=======================================
 
int main(){
//  printf('Введите имя файла в который будет сделана запись:');
//  printf('Текст');
    int n=5;
    Shop *Mag= new Shop[5];
    Mag=Zapovnennia(5);
    int size[5];
    char *file_name=new char [25];//------имя файла, в который сохраняем
    cin>>file_name;
        //Делаем запись структуры в файл
    ofstream out(file_name, ios::out|ios::app|ios::binary);
    
    for(int i=0;i<n;i++){
//      size[i]=sizeof(float)+strlen(Mag[i].Name)+strlen(Mag[i].Marka);
//      out.write((char *)&Mag[i] ,size[i]);
    }
    out.close();
    int SIZE=0;
    
    Shop *New=new Shop[n];
//  printf('/n Завершено');
             //=======считывание из файла==========
//  printf('Чтение структуры из файла' + file_name);
    cin>>file_name;
    ifstream in(file_name, ios::in|ios::binary);
    
    for(int i=0;i<n;i++){
        New[i]=init();
        char *buf=new char [size[i]];
        in.seekg(SIZE);
        in.read(buf,size[i]);
        SIZE+=size[i];
        New[i]= *((Shop *)buf);
        delete[] buf;
    }
    Vuvid(New,n);
    delete[] Mag;
    delete[] New;
    delete[] file_name;
    return 0;
    
}
Ну и еще загон с "printf"

Что скажите по поводу сортировки?
0
reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
25.12.2010, 14:10 #5
Цитата Сообщение от wir_wolf Посмотреть сообщение
Ну и еще загон с "printf"
Сортировку не смотрел, нет времени. А вот касательно printf: строка указывается в двойных кавычках - "my string", а символ(char) указывается в одинарных кавычках 'c', '\0'
0
wir_wolf
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
25.12.2010, 15:03  [ТС] #6
С printf то пол беды, оно не так важно, но все равно спасибо. Мне сейчас нужно найти хотябы алгоритм сортировки а то в нете есть даже написаны проги сортирующие числа, а вот про сортировку со словами не указано ничего
0
wir_wolf
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
14.01.2011, 15:55  [ТС] #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
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
// sort.cpp: главный файл проекта.
 
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <fstream>
#include <string>
using namespace std;
void write_struct();
void read_struct();
void main1();
void shell();
void shellSort();
//==================Structure===============
struct Shop{
   char *Name;
   char *Marka;
   float Price;   
};
 
//=================Structure initialization===========
Shop init(){
    Shop sp;
    sp.Name=new char[256];
    sp.Marka= new char[256];
    return sp;
}
//======================================
Shop *Zapovnennia(int a)
{ 
 
Shop *Ima1=new Shop[a];
int q=0;
 
for(int i=0;i<a;i++){
q=rand()%60;
 
if((q)>60) Ima1[i].Name="Televizor";
if(q<=60 && q>=30) Ima1[i].Name="Magnitola";
if(q<30 && q>=0) Ima1[i].Name="DVD ";
 
q=rand()%100;
 
 
if((q)>75) Ima1[i].Marka="SONY ";
if(q<=75 && q>=50) Ima1[i].Marka="PHILIPS";
if(q<50 && q>25) Ima1[i].Marka="SAMSUNG";
if(q<=25 && q>=0) Ima1[i].Marka="SHARP ";
 
q=rand()%100;
 
Ima1[i].Price=q*100.2f;
 
 
}
return Ima1;
}
 
void Vuvid(Shop *Ima,int b)
{
for(int i=0;i<b;i++) cout<<i+1<<" "<<Ima[i].Name<<"\t"<<Ima[i].Marka<<"\t\t"<<Ima[i].Price<<"\n";
 
}
 
//=======================================
 
int main(){
    string comand;
    string cmd[3] = {"read","write","add"};
    setlocale( LC_ALL,"Russian" );
    main1();
    printf("Введите имя команды (read,write,add):");
    cin >>comand;//scanf("%c", &comand);
 
    if(comand == cmd[1]){
        write_struct();
    }
    else if(comand == cmd[0])
    {
        read_struct();
    }
    else
    {
        printf("Нет такой команды");
    }
    
    return 0;
    
}
 
void shell(Shop *items, int count)
{
   register int i, j, gap, k;
   Shop x; 
   int a[5] = {9, 5, 3, 2, 1};
 
   for(k=0; k < 5; k++) 
   {
      gap = a[k];
      for(i=gap; i < count; ++i) 
      {
         x = items[i];
         for(j=i-gap; (strcmp(x.Price, items[j].Price)<0) && (j >= 0); j=j-gap)
            items[j+gap] = items[j];
         items[j+gap] = x;
      }
   }
}
 
void main1(){
    int n=5;
    
    Shop *Mag= new Shop[5];
    
    Mag=Zapovnennia(5);
    
    int size[5];
    
    char *file_name=new char [25];//=====имя файла, в который сохраняем
    
    cin>>file_name;
    
             //=========запись в файл===========
 
    ofstream out(file_name, ios::out|ios::app|ios::binary);
    
    for(int i=0;i<n;i++){
    
    
        size[i]=sizeof(float)+strlen(Mag[i].Name)+strlen(Mag[i].Marka);
    
        out.write((char *)&Mag[i] ,size[i]);
    
    }
    
    out.close();
 
    int SIZE=0;
    
    Shop *New=new Shop[5];
 
             //=======считывание из файла==========
    
    ifstream in(file_name, ios::in|ios::binary);
    
    for(int i=0;i<n;i++){
        
          New[i]=init();
    
          char *buf=new char [size[i]];
    
          in.seekg(SIZE);
    
          in.read(buf,size[i]);
    
          SIZE+=size[i];
 
          New[i]= *((Shop *)buf);
          delete[] buf;
             }
    Vuvid(New,n);
    printf("\n");
    shell(New, 4);
    Vuvid(New,n);
    
    delete[] Mag;
    delete[] New;
    delete[] file_name;
    
    
}
В одном случае когда нечего не нужно сортировать ошибки нету
это я сортирую по полю Marka
А когда сортируешь по Name
Вылетает
В чем ошибка:?
 Комментарий модератора 
Изображения следует прикреплять к сообщению во избежании их утраты на сторонних ресурсах
0
Миниатюры
Сортировка Шелла для файла   Сортировка Шелла для файла  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2011, 15:55
Привет! Вот еще темы с ответами:

Сортировка Шелла - C++
Здраствуйте! Обьясните пожалуйста сортировку Шелла ну или хотя бы скиньте код самой сортировки.

Сортировка Шелла - C++
Скажите пожалуйста какой из вариантов лучше использовать для реализации сортировки Шелла? Второй вариант меня смущает тем, что там больше...

Сортировка Шелла - C++
В алфавитном порядке по фамилии алгоритмом Шелла #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt; #include &lt;iomanip&gt; ...

C++ Сортировка Шелла? - C++
Здравствуйте. Нужно написать сортировку Шелла, но они все так похожи, что не могу понять, правильная ли она у меня. Прошу помочь, она ли...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.01.2011, 15:55
Ответ Создать тему
Опции темы

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