Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Найти минимальный оборот в таблице, Найти минимальный оборот в таблице 
:(
    Опции темы
drcaligari
  Дата 5.2.2017, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.2.2017

Репутация: нет
Всего: нет



Здравствуйте! Помогите пожалуйста найти ошибку. Данные для ввода в таблице.


user posted image

Задание:
а) В каком году оборот был минимальным (вывести на экран год, оборот)
б) В каких годах разница в индексах экспорта США и ФРГ была не больше P? (значение P вводится с клавиатуры). Вывести год, индекс экспорта, и разницу.

Вводятся данные более менее нормально. Помогите исправить ошибку. Не выводится минимальный оборот, индекс экспорта между странами.

Извините за косой/кривой код.
Код

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#define N 30
#define LN 20
#define LC 15
#define LG 62
    int i;
    int n;
    int pr;
    int r;
    float pl_z;
    struct torgovlya  /*strukturniy tip torgovlya*/
        {float year;
         float oborot;
         float usa;
         float en;
         float frg;
        };
    char sg[LG+1]="---------------------------------------";
    struct torgovlya c[N]; /*tablica*/
    struct torgovlya rab;
    struct tabl
    {
        float year;
        float oborot;
        float usa;
        float en;
        float frg;
        float pl;
        float sum;
 
    }c_r[N];
    int p;
    /*promezutochnie dannie*/
        float pl;
        float sum;
        float ar_min;
        int n_min;
        int pr;
        //float r;
int main()
{
 do
{
    printf("Vvedite kolichestvo godov(ne bolshe chem %d):",N);
    scanf ("%d",&n);
    if (n<=0 || n>N)
        {
            pr=1; printf ("Oshibka!\n");
        }
        else pr=0;
}
while (pr);
 
{
    printf("Vvedite dannie o stranah\n");
    printf("%s\n",sg);
    printf("! Year ! oborot !");
    printf(" USA ! ENGLAND ! FRG !\n");
    printf("%s\n",sg);
 
do
{
    for(i=0; i<n; i++)
        {
            printf("! %d ",i+1); /*identifikaciya stroki*/
            scanf("%d",&r);              c[i].year=r;
            scanf("%d",&r);              c[i].oborot=r;
            scanf("%d",&r);              c[i].usa=r;
            scanf("%d",&r);              c[i].en=r;
            scanf("%d",&r);              c[i].frg=r;
 
    if(c[i].year<0 || c[i].oborot<0 || c[i].usa<0 || c[i].en<0 || c[i].frg<0) /*proverka ogranicheniy*/
 
            {   pr=1;
                printf("Nevernie znacheniya!\n");
                i--;
            }
            else pr=0;
        }
}
while(pr);
 
    printf("%s\n",sg);
 
do
{
    printf("Vvedite indeks eksporta:");
    scanf(" %f",&pl_z);
    if (pl_z<0)
    {
        pr=1;
        printf("Oshibka\n");
    }
    else pr=0;
}
while(pr);
 
/* ++++++++++++++++++++++zadacha b+++++++++++++++++++++++ */
    n_min=-1;
    ar_min=1.0e6;
    p=-1;
    for(i=0; i<n; i++)
    {   /*gustota naseleniya*/
        pl=c[i].frg-c[i].usa;
        sum=c[i].frg+c[i].usa;
        if (pl>pl_z);
        {
            p++;
            c[i].frg=c_r[i].frg;
            c[i].usa=c_r[i].usa;
            //c_r[p].pl=pl;
        }
 /*==============poisk minimalbogo oborota============*/
 
 
   if (c[i].oborot<ar_min)
   {
       ar_min=c[i].oborot;
       n_min=i;
   }
 
}
 /*==============VIVOD============*/
    if (p>-1)
    {
        printf("Raznica v indeksax USA i FRG," "kotoroe ne previshaet%f\n",pl_z);
        printf("%s\n",sg);
        printf("! YEAR ! indeks eksporta ! raznica !\n");
        printf("%s\n",sg);
        for (i=0; i<p; i++)
            printf("!%-17d!%-9d!% 5.2f!\n",c_r[i].year,c_r[i].sum,c_r[i].pl);
        printf("%s\n",sg);
    }
    else
        printf("stran net.\n",pl_z);
 
    printf("minimalniy oborot:%d",c[n_min].oborot);
getch();
}
}

PM MAIL   Вверх
ss
Дата 5.2.2017, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 17.5.2007

Репутация: нет
Всего: нет



желательно этот код переписать. 64 в 75 заменить if на while. и многое другое.

ошибка заключается в том, что неправильно используются типы. Структура имеет типы полей float а переменная через которую заполняется структура int (зачем заполнять через переменную, можно и напрямую ?!) стр 69-73. В ней дело.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1177 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.