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

Тема в разделе "C/C++/C#", создана пользователем vladis222, 3 янв 2012.

  1. vladis222

    vladis222 Active Member

    Регистрация:
    6 дек 2011
    Сообщения:
    31
    Симпатии:
    0
    Здравствуйте, я уже создавал тему по работе со структурами, но у меня есть вопросы по моей задаче. У меня в задаче нужно согласно таблице:
    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]
     
Загрузка...

Поделиться этой страницей