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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Последовательность и arctg http://www.cyberforum.ru/cpp-beginners/thread211122.html
Доброго времени суток. Прошу помощи с двумя задачами, очень нужно. 1) Даны целые числа a(i)...a(n). Известно, что a(i)>0 и что среди чисел есть хотя бы одно отрицательное число. Найти количество четных чисел, предшетсвующих отрицательному числу. 2)Не используя стандартные функции, вычислить с точностью до eps>0: y=arctgx=x-x^3/3+x^5/5+...+(-1)^n*x^2n+1/(2n+1) Модуль x меньше 1. Заранее...
C++ Количество слов Нужно подсчитать количество слов в каждом предложении. Помогите, пожалуйста http://www.cyberforum.ru/cpp-beginners/thread211114.html
C++ Перевод небольшой программки с Паскаля на С++
У меня не сильно складываются отношения с Паскалем))) Нужно перевести программку на С++. Помогите, пожалуйста, буду очень признателен. Заранее спасибо TYPE MAT=ARRAY OF REAL; VEC=ARRAY OF REAL; VAR I,K,M,N: INTEGER; E,L: REAL; A:MAT; X:VEC; PROCEDURE MATR (N:INTEGER; VAR X:VEC; VAR A:MAT); VAR I,J: INTEGER; BEGIN
C++ расписать каждую строчку что она значит и посмотрите правилоно ли написана программа..
1) include <stdio.h> int main int a,b,c,rez; printf("Vvedite a); scanf("%d",&a); printf("Vvedite b); scanf("%d",&b); printf("Vvedite c); scanf("%d",&c);
C++ Ошибка в коде http://www.cyberforum.ru/cpp-beginners/thread211057.html
Вот написал програмку для решения уравнений, но при компиляции выбивает ошибку, помогите исправить, когда уравнений было 5, то всё отлично работало, //Метод простой итерации решения СЛАУ #include <stdio.h> #include <conio.h> #include <math.h>
C++ ссылки всем добрый вечер.. помогите написать программу вычисления объема параллелограмма. после того как пользователь введет данные, необходимо определить на них ссылки и расчет производить с помощью ссылки подробнее

Показать сообщение отдельно
wir_wolf
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 11
14.01.2011, 15:55  [ТС]     Сортировка Шелла для файла
У меня получилось скомпоновать ортировку и создание структуры, одна беда, сортировка как то не сортирует.
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
Вылетает
В чем ошибка:?
 Комментарий модератора 
Изображения следует прикреплять к сообщению во избежании их утраты на сторонних ресурсах
Миниатюры
Сортировка Шелла для файла   Сортировка Шелла для файла  
 
Текущее время: 14:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru