day & night

Сортировка строк на С++, Программирование
Дата обновления: , перейти к новому сообщению
icon14
#1
nvova



профи!
Group Icon

Группа: Наши Люди
Сообщений: 523
Регистрация: 10.01.2006
Из: СПб
Пользователь №: 104.042


Респектов: 154
-----X----




Имеется структура типа "s".
CODE

struct s
{
...
char rab[30];
...
};

Сортирую строки (qsort):
CODE
int compare(const void *a,const void *b)
{   return( strcmp((*(s*)a).rab,(*(s*)b).rab) );  }

Возник вопрос куда впихнуть "(char *)" или что-то вроде этого, чтоб чтоб не возникала ошибка:
cannot convert parameter from char to int.
Пробовал по всякому, но чего-то не выходит sad.gif
User is offline
Go topGo end

Ответов(10 - 19)
14.05.2007 - 22:05
#11
Штуцер



Специалист
Group Icon

Группа: Наши Люди
Сообщений: 363
Регистрация: 2.03.2006
Из: The Earth planet
Пользователь №: 125.765


Респектов: 83
-----X----




Совершенно согласен с Яхом, одно маленькое "но": разные компиляторы содержат свои собственные библиотеки для работы со строками, поэтому можно включать
CODE
#include <cstring>

или
CODE
#include <cstring.h>

или
CODE
#include <string.h>

или
CODE
#include <string>

хоть что-то, да должно сработать. Верно, Ях?
User is offline
Go topGo end
14.05.2007 - 22:19
#12
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Верно, можно еще просто подключить windows.h. Тоже компилируется нормально.

З.Ы. Ты первый, кто написал по-русски мой ник. Аж непривычно как-то smile.gif
User is offline
Go topGo end
2.06.2007 - 13:39
#13
nvova



профи!
Group Icon

Группа: Наши Люди
Сообщений: 523
Регистрация: 10.01.2006
Из: СПб
Пользователь №: 104.042


Респектов: 154
-----X----




Курсач и др., наконец, сдал smile.gif
Вобщем в первом посту у меня правильно. Извиняюсь за беспокойство, ошибка была в другом.

Возник еще такой вопрос:
Искал информацию по блокировке файла на запись при определенных определенных операциях, но инфы куча для Линукса, а как это сделать в винде че-то не нашел. Если можно, объясните примером.
User is offline
Go topGo end
icon14 15.11.2008 - 3:44
#14
Niuk



Грамотный
Group Icon

Группа: Наши Люди
Сообщений: 221
Регистрация: 20.04.2005
Из: Север
Пользователь №: 11.753


Респектов: 11
-----X----




Всем привет, есть похожая проблема в с++ чайник полный подскажите плиз как написать функцию сортировки строк в файле.

Вот пример.
Code

#include <fstream.h>  
#include <string.h>  
#include <conio.h>  
#include <iomanip.h>  
#include <stdlib.h>  
#include <io.h>  
#define ID 4  
#define DATA 9  
#define TIME 6  
#define NAME 12
   
struct ychet  
{  
char id[ID];    
char data[DATA];  
char time[TIME];    
char name[NAME];     
};    

void sort();   // Функция сортировки строк из файла с последюущей записью в файл (можно создать новый файл) и выводом на экран.  
{  
что тут писать и по возможности, как это работает?  
};  


Пример файла для сортировки (сортировку произвести по полю id)
Code

1  //id
12.10.07 //data
12-23  //time
Петров  //name
4
12.05.08
14-56
Иванов
2
30.11.07
15-00
Сидоров

Конечный файл
Code

1  //id
12.10.07 //data
12-23  //time
Петров  //name
2
30.11.07
15-00
Сидоров
4
12.05.08
14-56
Иванов
User is offline
Go topGo end
18.11.2008 - 18:47
#15
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Цитата | Quote(Niuk @ 15.11.2008 - 4:44)
Пример файла для сортировки (сортировку произвести по полю id)
*


А заранее известно кол-во строк в файле?
User is offline
Go topGo end
18.11.2008 - 19:52
#16
Niuk



Грамотный
Group Icon

Группа: Наши Люди
Сообщений: 221
Регистрация: 20.04.2005
Из: Север
Пользователь №: 11.753


Респектов: 11
-----X----




Цитата | Quote(yah @ 18.11.2008 - 19:47)
А заранее известно кол-во строк в файле?
*


Нет, это всеголишь одна из немногих функций из программы работы с БД
То есть программа так же должна пополнять, удалять и отменять изменения в файле, Проводить поиск по заданому полю.
Всё остальное реализовано кроме сортировки.
Как сдам(если сдам) курсовик выложу его в ветке "учимся в месте".
User is offline
Go topGo end
19.11.2008 - 0:38
#17
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Цитата | Quote(Niuk @ 18.11.2008 - 20:52)
struct ychet 

char id[ID];   
char data[DATA]; 
char time[TIME];   
char name[NAME];   
};
*



Цитата | Quote(Niuk @ 15.11.2008 - 4:44)
Пример файла для сортировки (сортировку произвести по полю id)
*



1. Если я не ошибаюсь, то сортировать по массивам нельзя, отсюда следуют пункты...
2. Поле ID - точно массив?
3. ...Точно типа char?
User is offline
Go topGo end
19.11.2008 - 2:54
#18
Niuk



Грамотный
Group Icon

Группа: Наши Люди
Сообщений: 221
Регистрация: 20.04.2005
Из: Север
Пользователь №: 11.753


Респектов: 11
-----X----




Исходник полностью рабочий компилируется bc++ v3.1
В структуре ychet все поля типа чар. Сортировка нужна по выбранному полю, но для примера подойдет и первое поле id[ID]
» Исходник «
User is offline
Go topGo end
19.11.2008 - 8:21
#19
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Цитата | Quote(Niuk @ 19.11.2008 - 3:54)
В структуре ychet все поля типа чар. Сортировка нужна по выбранному полю, но для примера подойдет и первое поле id[ID]
*


Смотри, допустим даны числа 1 3 5 2. Чтобы их отсортировать (например по возрастанию), нужно их сравнить между собой... А если вместо чисел - массивы? Как тогда? Как ты определишь что, например, массив А больше массива Б ? Скорее всего поле ID должно быть простого типа (int например)...
User is offline
Go topGo end
19.11.2008 - 12:31
#20
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Принимай, только я бы на твоем месте, прежде чем использовать, все перепроверил бы раз 10 smile.gif

» Нажмите, для открытия спойлера | Press to open the spoiler «

User is offline
Go topGo end

Topic Options
Сейчас: 29.04.2024 - 4:02
Мобильная версия | Lite версия