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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 23:40   #11
max382
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
а у вас какой компиль?

в VS просто нет функций типа clrscr
Borland С++ 3.1 (если кому надо вдруг http://ifolder.ru/11606753)

Там просто какая то проблема с конвертацией типов как я понял, особенно много ошибок касающихся char T_T
max382 вне форума Ответить с цитированием
Старый 29.04.2009, 23:51   #12
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

1.функция strcmp используется для сравнения строк, поэтому переменные типа int, float сравниваются обычными математ. операторами
2.при сортировке менять нужно сами структуры, а не их части

Код:
temp=rec[i];
  rec[i]=rec[j];
  rec[j]=temp;
вместо (тем более tmp - у вас структура, а rec[i].name - строка)

Код:
temp=rec[i].name;
  rec[i].name=rec[j].name;
  rec[j].name=temp;
3. функция poisk
int a;
// объявляете как инт , а проверяете как чар
case '1':
надо
case 1:

в функции sort - те же ошибки, хотя в main() правильно

4. меню организуйте с помощью циклов (использование goto нежелательно)

Код:
void main()
{
char a;
while(1){
 cout<<"\tGLAVNOE MENU\n";
 cout<<"1-Sozdat fail\n\r2-Dobavit zapis v fail\n\r3-Sortirovat zapisy\n\r4-    Poisk\n\r5-Vyhod\n";
 a=getchar();
 switch(a)
 {case '1':sozd();break;
  case '2':vvod();break;
  case '3':sort();break;
  case '4':poisk();break;
  case '5':exit(1);
}
 }
5. сортировка и поиск у вас работать не будут, так как вы не считываете данные в структуру rec
counter вне форума Ответить с цитированием
Старый 30.04.2009, 07:47   #13
max382
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
5. сортировка и поиск у вас работать не будут, так как вы не считываете данные в структуру rec
Хм, я чего то не понимаю, щас смотрю на код, вроде все должно считываться, или я не понял доконца что вы имели ввиду?

Последний раз редактировалось max382; 30.04.2009 в 08:06.
max382 вне форума Ответить с цитированием
Старый 30.04.2009, 15:54   #14
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

что то я не наблюдаю в вашем коде чегото такого...
Код:
FILE *my;
 my=fopen("Televizor.txt","r");
 for(int i=0;i<kolzap;i++)
{
   fread(&rec[i],sizeof(rec[i]),1,my);
}
counter вне форума Ответить с цитированием
Старый 01.05.2009, 12:25   #15
max382
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
что то я не наблюдаю в вашем коде чегото такого...
Код:
FILE *my;
 my=fopen("Televizor.txt","r");
 for(int i=0;i<kolzap;i++)
{
   fread(&rec[i],sizeof(rec[i]),1,my);
}
Да про это к сожалению забыл, щас вроде все поставил куда нужно а все равно не работает ни поиск ни сортировка T_T
В чем еще может быть проблема?
Скинул на всякий случай новый код:
Вложения
Тип файла: rar KUTTT.rar (1.7 Кб, 9 просмотров)
max382 вне форума Ответить с цитированием
Старый 01.05.2009, 14:24   #16
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

поиск вроде работает , и сортировка тоже (забыли вставить cin>>a; в код)

Только зачем вам постоянно считывать данные из файла, если можно один раз прочиттаь их в начале работы программы, а затем сортировать и удалять и добавлять данные в массив. В конце просто перезаписать файл.
counter вне форума Ответить с цитированием
Старый 01.05.2009, 14:53   #17
max382
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
поиск вроде работает , и сортировка тоже (забыли вставить cin>>a; в код)

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

___________________________________ ___________________________________ __________
xDDDDDDD Каким я себя щас чувствую дураком.... действительно забыл самую простую вещь - cin>>a;
Спасибо за подсказку а то я думал код полностью неправильный...


Ладно можно тогда задам надеюсь последние пару вопросов?
1) Можно ли каким нибудь образом удалять записи из файла?
2) У мня после создания файла и ввода записей появляется второе главное меню снизу и все надписи уже делаются намного ниже, и так пока не заполнится весь экран... Вроде везде окна написанны правильно, и clrscr() тоже есть, непойму...

Последний раз редактировалось max382; 01.05.2009 в 15:36.
max382 вне форума Ответить с цитированием
Старый 02.05.2009, 11:31   #18
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
...появляется второе главное меню...
попробуйте
Код:
cin>>a;
вместо
Код:
a = getchar();
Цитата:
Можно ли каким нибудь образом удалять записи из файла?
наверное нет. Такое я встречал только в API, когда файл проецировался в память и с ним можно было работать как с обычным массивом.
counter вне форума Ответить с цитированием
Старый 02.05.2009, 11:51   #19
max382
Пользователь
 
Регистрация: 15.04.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от counter Посмотреть сообщение
попробуйте
Код:
cin>>a;
вместо
Код:
a = getchar();
наверное нет. Такое я встречал только в API, когда файл проецировался в память и с ним можно было работать как с обычным массивом.
Ну ладно, попробую поспрашивать друзей)))
cin>>a; не помог, все точно так же, наверно я как то криво описал окна и т.д. правда щас настолько уже запутался в этом коде, что не могу самостоятельно найти ошибку...

И хотел задать еще вопросик, столкнулся тут с одной проблемой:
Я хочу выводить записи не столбиком, а таблицей, вот таким образом

Код:
cout<<"Nazvanie firmi ";
	cout<<"Marka televizora ";
	cout<<"Razmer diagonali ";
	cout<<"Tip televizora ";
	cout<<"Cena tovara ";
	cout<<"\t";
	switch( a )
	{
	case 1:
	{
		for( i = 0; i < kolzap - 1; i++ )
		{ fread( &rec[i], sizeof( rec[i] ), 1, my );
			for( j = i + 1; j < kolzap; j++ )
			{ fread( &rec[j], sizeof( rec[j] ), 1, my );
				if( strcmp ( rec[i].firma, rec[j].firma )  >0 )
				{
				temp = rec[i];
				rec[i] = rec[j];
				rec[j] = temp;
				}
			}
		}
		for ( i = 0; i < kolzap; i++ )
		{ fread( &rec[i], sizeof( rec[i] ), 1, my );
			cprintf( "    %s          %s             %i          %s           %.3f \n\r", rec[i].firma, rec[i].name, rec[i].diagonal, rec[i].tip, rec[i].stoimost);
		}
	}
	break;
т.е чтобы сверху были просто записи (диагональ, цена и т.д. чтобы по 100 раз не выводить одно и тоже) а внизу уже каждую запись для отдельного товара... должно получится что то вроде этого:
Название фирмы марка диагональ
Samsung.............xkr17.......19
LG......................tfs14...... .17

Но дело в том чт оу меня все кривится, пытался сделать просто пробелами - то же самое, пытался впихнуть туда \t и тоже ничего не выходит... Не знаете как подровнять все эти записи чтобы они не сливались и не вылезали за "рамки".

P.S. Извините за надоедливость, просто уже программа почти готова, осталось довести до ума, но почему то ничего придумать уже сам не могу, я надеюсь что это уже будет последним о чем я прошу...

Последний раз редактировалось max382; 02.05.2009 в 11:56.
max382 вне форума Ответить с цитированием
Старый 02.05.2009, 13:06   #20
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

а спецификаторы ширины поля смотрели?
counter вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с задачой со структурами на С++. Many man Помощь студентам 1 12.04.2009 11:45
работа со структурами - дерево Nostalgia Паскаль, Turbo Pascal, PascalABC.NET 0 24.03.2009 19:45
Работа с массивами и структурами (С/С++) Aliance Помощь студентам 3 28.10.2008 22:28
Помогите со структурами в Delphi profi Помощь студентам 2 24.08.2008 12:15
Проблема с модулями и дин.структурами данных velgelmina Помощь студентам 1 16.05.2007 06:43