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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2012, 18:44   #1
vic1989
Новичок
Джуниор
 
Регистрация: 23.12.2012
Сообщений: 1
По умолчанию обработка структуры

дан файл в виде списка наименование характеристика ноутбуков ;нужно забить наименование цену вес и тд в поля структуры.
далее записать в бинарный файл ноутбуки отвечающие условию....(условие работает)
все работает условие выполняется записывается то что надо,но вложенная структура(габариты ноута) выводится как нули
вот код
Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <locale.h>
#include <conio.h>
#include <malloc.h>
#include <windows.h>
#include <ctype.h>
#include <string.h>

FILE *f,*in,*out;
int k,t,i,e,m=0;char str[500];int mass[10];double l,l1;float b;
struct disp_res {	// габаритные размеры
	float x;	            // 
	float y;	            // 
	float z;
	};
struct NOTEBOOK{
	char model[21];  	// наименование
	float w;              //вес
	float price;     	    // цена
	struct disp_res note1[15] ;
};
	char  str1[500],str2[500],*ptrend;char  mass1[]="14522 ";
	char p;
	struct NOTEBOOK note[100];

	void main(){setlocale(LC_CTYPE, "Russian"); printf("сделайте выбор\n");

		if(!(f=fopen("d:\\text.txt","r"))) 
{
	printf("Ошибкa открытия файла\n"); exit(0);}
		for (i=0;i<9;i++){
			fgets(str,78,f);//printf("eblo%s",str);
			for (t=0;t<20;t++){
			str1[t]=str[t];
			strcpy(note[i].model,str1);}printf("%s",note[i].model);
			memset (str1, 0, sizeof(str1));
			for (t=20,e=0;t<24;t++,e++){
			str1[e]=str[t];
			
			note[i].price=l;}
			//printf("%s",str1);
			l=strtod(str1,&ptrend);
				note[i].price=l;printf("////%1.0f",note[i].price);
				///
				memset (str1, 0, sizeof(str1));
				for (t=30,e=0;t<33;t++,e++){
			str1[e]=str[t];
			l=strtod(str1,&ptrend);
			
			note[i].note1[i].x=l;}
			//printf("%s",str1);
			
			printf(" габарит%1.1f",note[i].note1[i].x);
			memset (str1, 0, sizeof(str1));
				for (t=34,e=0;t<38;t++,e++){
			str1[e]=str[t];
			l=strtod(str1,&ptrend);
			note[i].note1[i].y=l;}
			//printf("%s",str1);
			
			printf("x%1.1f",note[i].note1[i].y);
			memset (str1, 0, sizeof(str1));
				for (t=39,e=0;t<43;t++,e++){
			str1[e]=str[t];
			l=strtod(str1,&ptrend);
			note[i].note1[i].z=l;}
			//printf("%s",str1);
			printf("x%1.1f",note[i].note1[i].z);

			memset (str1, 0, sizeof(str1));
				for (t=25,e=0;t<28;t++,e++){
			str1[e]=str[t];
			l=strtod(str1,&ptrend);
			note[i].w=l;}
			//printf("%s",str1);
			printf(" %1.1f",note[i].w);
			printf("\n\n");}
		
		
		
		
		
		fclose(f);
			





		//////////////////////////////////
		if(!(f=fopen("d:\\text.txt","r"))) 
{
	printf("Ошибкa открытия файла\n"); exit(0);}
		for(i=0;!feof(f);i++){
			fgets(str,78,f);k++;
		}
	printf("k=%d\n",k);
	fclose(f);
	//////////////////////////////////////////////
	if(!(in=fopen("d:\\input.txt","w+b"))) 
{
	printf("Ошибкa открытия файла\n"); exit(0);}
			for(i=0;i<k;i++){b=61023/((note[i].note1[i].x)*(note[i].note1[i].y)*(note[i].note1[i].z));printf("   b=====%1.2f\n",b);
			if((b)<=285){fwrite(&note[i],sizeof(note[i]),1,in); m++;}
				
				
			}fclose(in);printf("chislo 3apisei v input=%d\n",m);
				///////////////////////////////////////////////
					if(!(in=fopen("d:\\input.txt","r+b"))) 

{
	printf("Ошибкa открытия файла\n"); exit(0);}
					for(i=0;i<m;i++){fread(&note[i],sizeof(note[i]),1,in);
						
						printf("%s  %1.0f %1.1f %1.1f x%1.1f x%1.1f\n",
							note[i].model,note[i].price,note[i].w,note[i].note1[i].x,note[i].note1[i].y,note[i].note1[i].z);}fclose(in);


		}
	/////////////

Последний раз редактировалось Stilet; 23.12.2012 в 19:10.
vic1989 вне форума Ответить с цитированием
Старый 23.12.2012, 19:02   #2
EUGY
Форумчанин
 
Аватар для EUGY
 
Регистрация: 11.07.2010
Сообщений: 914
По умолчанию

Код:
struct NOTEBOOK{
char model[21]; // наименование
float w; //вес
float price; // цена
struct disp_res note1[15] ;
};
Для чего это в одной записи по ноутбуку пятнадцать типов габаритов?
И почему это в циклах такое note[i].note1[i] ?


Думаете что если написать в одну строчку программа меньше будет?
for(i=0;i<k;i++){b=61023/((note[i].note1[i].x)*(note[i].note1[i].y)*(note[i].note1[i].z));printf(" b=====%1.2f\n",b);
Вообще не возможно проанализировать.
EUGY вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические структуры данных, списковые структуры (надо разобраться что делает программа) _4Alex4_ Помощь студентам 1 14.11.2012 07:39
Написание программ (древовидные структуры, структуры неспециального вида и т.д.) Green Gin Фриланс 2 27.04.2012 15:26
Управляющие структуры. Программирование алгоритмов разветвляющейся структуры. Лёнка Компоненты Delphi 1 23.04.2012 15:03
обработка структуры данных Narim Общие вопросы C/C++ 0 20.04.2011 14:48