Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2008, 23:54   #11
mat90x
Пользователь
 
Аватар для mat90x
 
Регистрация: 19.04.2008
Сообщений: 22
По умолчанию

а почему нельзя объявлять имя файла в head?
mat90x вне форума Ответить с цитированием
Старый 04.05.2008, 00:12   #12
mat90x
Пользователь
 
Аватар для mat90x
 
Регистрация: 19.04.2008
Сообщений: 22
По умолчанию

у меня не получается сделать функцию для пометок. Можете мне помочь ее сделать? пожлуйста...

Фнкция получает поток, связанный с файлом, и помечает на удаление (или снимает признак удаления) из файла одну или несколько записей. Помечает по фамилии, который ввел полшьзователь!
Вот ее алгоритм:
Код:
void Pometka(fstream& p, OURDATA dat, char* polFam, char pometka)   
//функция помечает символом pometka запись если фамилия записи dat.fam    
//совпадает с введенной фамилией пользователя polFam   
{  
    p.clear();//очищаем поток от всех флагов  
    for(int i = 1; Read(p, dat, i); ++i)//читаем все записи  
        if((strcmp(dat.fam, polFam)) == 0)   
        {  
            *dat.pmt = pometka;//если фамилии совпали, то помечаем эту запись  
            Write(p, dat, 0);//записываем ее обратно в файл  
        };   
}
Почему она не работает?

Последний раз редактировалось mat90x; 04.05.2008 в 14:44.
mat90x вне форума Ответить с цитированием
Старый 04.05.2008, 21:35   #13
mat90x
Пользователь
 
Аватар для mat90x
 
Регистрация: 19.04.2008
Сообщений: 22
По умолчанию

ну что? никто не знает или просто никто не хочет помгать?
mat90x вне форума Ответить с цитированием
Старый 09.05.2008, 23:43   #14
mat90x
Пользователь
 
Аватар для mat90x
 
Регистрация: 19.04.2008
Сообщений: 22
По умолчанию

Я сделал так, что у меня все работает! Но осталось только одну последнюю функцию сделать...

Вот у нас даны массив стурктур, в поле которых есть фамилии работникоа. Как отсортировать их в алфавитном порядке?

Последний раз редактировалось mat90x; 10.05.2008 в 00:23.
mat90x вне форума Ответить с цитированием
Старый 10.05.2008, 07:15   #15
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от mat90x Посмотреть сообщение
Я сделал так, что у меня все работает! Но осталось только одну последнюю функцию сделать...

Вот у нас даны массив стурктур, в поле которых есть фамилии работникоа. Как отсортировать их в алфавитном порядке?
Теперь Вы понимаете, что намного лучше найти решение простой проблемы самому, чтобы потом не ставили в тупик более сложные?
Что касается сортировки, Вам стоит определиться со способом и реализацией. Есть функция qsort в CRT, примеры есть на форуме, есть несколько вариантов сортировки и лексикографическое сравнение в STL http://www.cplusplus.com/reference/algorithm/ , или же будете реализовывать свой алгоритм.
B_N вне форума Ответить с цитированием
Старый 10.05.2008, 22:34   #16
mat90x
Пользователь
 
Аватар для mat90x
 
Регистрация: 19.04.2008
Сообщений: 22
По умолчанию

вот я хочу сначала прочитать из файла в созданный мной динамический массив структур, потом надо его отсортировать и записать обратно в файл!
И у меня не получается создать динамический массив структур... помогите! Что я тут неправильно сделал и как правильно его создавать?
Код:
#include"head.h"
void Sort(fstream& p)
{
	p.clear();
	int kolZap = p.tellg()/sizeof(OURDATA);//общее количетсов записей
    OURDATA* Temp = new OURDATA[kolZap];
	for(int i = 1; Read(p, Temp[i], i); ++i);
	
	
	for(int i = 1; i <= kolZap; ++i)
		delete []Temp[i];
	delete []Temp;
}
если без удаления массива структру, то все нормально! Информация выводиться! А если там буедт delete, то оибки возникают!
mat90x вне форума Ответить с цитированием
Старый 11.05.2008, 07:35   #17
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от mat90x Посмотреть сообщение
если без удаления массива структру, то все нормально! Информация выводиться! А если там буедт delete, то оибки возникают!
Ну так естественно! Вы же данные удаляете, а потом пытаетесь их записать. Поставьте запись до "delete []Temp;" (и зачем вообще Вам цикл с "delete []Temp[i];", если это массив и new был один?). Кстати, а где сам сортировка-то? Раз уж Вы работаете с массивом, а пишете скорее на super-C, а не на C++, то qsort сама сюда просится.
B_N вне форума Ответить с цитированием
Старый 11.05.2008, 11:06   #18
mat90x
Пользователь
 
Аватар для mat90x
 
Регистрация: 19.04.2008
Сообщений: 22
По умолчанию

Цитата:
Сообщение от B_N Посмотреть сообщение
Ну так естественно! Вы же данные удаляете, а потом пытаетесь их записать. Поставьте запись до "delete []Temp;" (и зачем вообще Вам цикл с "delete []Temp[i];", если это массив и new был один?). Кстати, а где сам сортировка-то? Раз уж Вы работаете с массивом, а пишете скорее на super-C, а не на C++, то qsort сама сюда просится.
пока еще не сделал! Не могу разобратьс с параметрами qsort

Цитата:
Ну так естественно! Вы же данные удаляете, а потом пытаетесь их записать. Поставьте запись до "delete []Temp;" (и зачем вообще Вам цикл с "delete []Temp[i];", если это массив и new был один?).
так без delete []Temp[i] тоже ошибку выдает!
Это связано с тем, что я массив структур никак не использую?
mat90x вне форума Ответить с цитированием
Старый 11.05.2008, 15:02   #19
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от mat90x Посмотреть сообщение
пока еще не сделал! Не могу разобратьс с параметрами qsort
Примеры qsort есть на форуме, пользуйтесь поиском.

Цитата:
Сообщение от mat90x Посмотреть сообщение
так без delete []Temp[i] тоже ошибку выдает!
Это связано с тем, что я массив структур никак не использую?
Ошибку выдает потому, что Вы где-то, за рамками этой функции, пытаетесь записать массив из памяти, которую только что сами же и освободили оператором delete. А в цикле delete не нужен, по логике вещей количество операторов new должно совпадать с количеством операторов delete. Написать-то так можно, только ничего хорошего из этого не выйдет.
B_N вне форума Ответить с цитированием
Старый 11.05.2008, 15:31   #20
mat90x
Пользователь
 
Аватар для mat90x
 
Регистрация: 19.04.2008
Сообщений: 22
По умолчанию

Цитата:
Примеры qsort есть на форуме, пользуйтесь поиском.
ладно, поищу...

Цитата:
Ошибку выдает потому, что Вы где-то, за рамками этой функции, пытаетесь записать массив из памяти, которую только что сами же и освободили оператором delete.
измините пожайлуста, но я не понял что вы хотели сказать. Но я этот массив испольхую только в этой функции...
mat90x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с потоками DeeNamid Общие вопросы Delphi 2 04.08.2008 17:36
работа с потоками Alex_Pro Общие вопросы .NET 1 01.07.2008 07:25
Как грамотно разделить данные между потоками? bagulma Общие вопросы Delphi 5 28.05.2008 22:41
Проблема с потоками vitalik007 Общие вопросы Delphi 1 11.03.2008 22:35
Ошибка при работе с потоками vitalik007 Общие вопросы Delphi 6 09.03.2008 09:25