Найти минимальный оборот в таблице и разницу в индексах
Добавлено: 06 фев 2017, 07:50
Здравствуйте! Помогите пожалуйста найти ошибку. Данные для ввода в таблице.

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

Задание:
а) В каком году оборот был минимальным (вывести на экран год, оборот)
б) В каких годах разница в индексах экспорта США и ФРГ была не больше 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();
}
}