Задача Со Структурой

vladis222

Active Member
06.12.2011
31
0
23
Украина
#1
Здравствуйте, я уже создавал тему по работе со структурами, но у меня есть вопросы по моей задаче. У меня в задаче нужно согласно таблице:
1) Найти прирост произ-ва, который в период 1928-1940 годы был минимальным; Вывести на экран инфу(вид пр-ва,объем в 1928,1940 г, прирост);
2) Найти те виды продукции. пр-во которых было больше K тыс шт.
Я написал код, по методичке, но в 1 задаче он выводит не всю инфу о минимальном производстве, а только имя, во второй не выводит единицы измерения. Посмотрите, пожалуйста, мой код, и скажите, что нужно исправить в первой и второй задачах)))
Вот мой код:
<!--shcode--><pre><code class='"#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
#include<math.h>
#include <windows.h>
#include <locale>
#define N 4
#define LN 80
#define EI 80
#define LG_I 90
#define LG_V 90
#define L 60
int main()
{
setlocale(LC_ALL, "rus");
struct production /*структурный тип для начальной таблицы*/
{ char name [LN+1'>;
char ed_izm[L];
float year_1928;
float year_1940;
float year_1945;
float year_1958;
};
/*_____________________________________Начальные данные_____________________*/
int n;
struct production p[N];
/*_____________________________________Результаты________________________________
_*/
struct
{
char name [LN+1];
float v_1928; /*Объем производства в 1928 году*/
float v_1940; /*Объем производства в 1940 году*/
char ed_izm[L]; /*Единицы измерения*/
float prirost; /*Прирост производства*/
} p_r[N]; /*Таблица результат*/
float min;

struct
{
char name[LN+1];
float v_1945;
char ed_izm[L];
} p_r_2[N];

/*____________________________________Промежуточные данные__________________________*/
int i; /*Индекс элемента таблицы*/
float prirost; /*Прирост для i производства*/
int pr; /*Признак правильности введенных данных*/
char sg_icx[LG_I+1]={"-------------------------------------------------------------------------"}; /*Отчеркивание для введения начальной таблицы*/
char sg_vix[LG_V+1]={"-------------------------------------------------------------------------"}; /*Отчеркивание для введения таблицы-результата*/
int n_min;/* Номер элемента соответствующего минимуму*/
float k;
float prir1;
float prir2;
float prir3;
float prir4;
int d;/*Реально кол-во видов продукции*/
float c;

/*_____________________________________________Проверка ограничений_________________________________*/
/*---------------------------------------------Для количества видов продукции в таблице-----------------------*/
do
{printf ("Введите количество видов продукции (не больше чем %d) : ",N);
scanf ("%d", &n);
if(n<0||n>N)
{pr=1; printf("Вы ошиблись!\n");
}
else pr=0;
}
while(pr);


/*---------------------------------------------Для элементов таблицы данных-------------------------------------------*/
printf(" Введите данные о видах продукции\n");
printf("%s\n",sg_icx);
printf("NN Вид продукции Единицы измерения ");
printf(" 1928 год 1940 год 1945 год 1958 год \n");
printf ("%s\n", sg_icx);
do
{
for(i=0;i<N;i++)
{
printf (" %d", i+1);
scanf ("%s", & p.name);
scanf ("%s",& p.ed_izm);
scanf ("%f", & p.year_1928);
scanf ("%f", & p.year_1940);
scanf ("%f", & p.year_1945);
scanf ("%f", & p.year_1958);
if(p.year_1928<0||p.year_1940<0||p.year_1945<0||p.year_1958<0)
{pr=1;
printf(" Ошибка. Повторите ввод\n");
i--;
}
else pr=0;
}
}
while(pr);

/*____________________________________________________________Решение задач______________________________________________________*/
/*============================================================Первая задача=================================================*/
min=p[0].year_1940-p[0].year_1928;
n_min=0;
for (i=1;i<N;i++)
{
if((p.year_1940-p.year_1928)<min)
min=p.year_1940-p.year_1928;
n_min=i;
}

/*=================================================Вывод минимального абсолютного прироста======================================*/
printf (" Минимальный абсолютный прирост : ");
printf("%s",p[n_min].name,"%f",p[n_min].year_1928,"%f",p[n_min].year_1940,"%s",p[n_min].ed_izm[L],"%f",min);

/*====================================================Вторая задача============================================================*/
d=0;
printf(" Введите число K : \n");
scanf("%f",&k);
printf("!NN! ! Вид продукции! Объем пр-ва в 1945 году! Ед.изм ! \n ");
printf ("%s\n", sg_vix);
for(i=1;i<N;i++)
{
if(p.year_1945>k)
{

printf("!%2d!%-20s!%-15f!% 7 s !\n",i+1,p.name,p.year_1945,p.ed_izm[L]);
printf ("%s\n", sg_vix);}
/*else
printf(" Видов производств, производство которых больше K нет : \n");*/
}
}


}[/CODE]