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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2010, 16:38   #1
xnise
Пользователь
 
Регистрация: 23.11.2009
Сообщений: 26
По умолчанию Структуры в С++

Доброго времени суток уважаемые форумчане. Есть у меня задачка с применением структур в С++ да вот с кодом где-то не все ладно - пишет ошибку кажется в последнем действии. Но вот никак не возьму в толк, что именно там не правильно:

Код:
//Багаж пассажира характеризуется количеством вещей (целый тип) и общим весом вещей (вещественный тип).
//Дан список из сведений о багаже 10 пассажиров.
//Найти багаж, средний вес одной вещи, в котором отличается не более, чем на 0,3 кг от общего среднего веса
//одной вещи по всему списку.
#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;
char* Rus(const char* str);
char str_rus[256];
struct bagg {int kol; float mas; double msr;};
int main()
{bagg a[3];
 float s=0; int i, p=3;
 double ss; double t=0.3;
 for (int i=1; i<=p; i++)
 {cout<<Rus("Введите данные о багаже ") <<i; cout<<Rus (" пассажира \n");
  cout<<Rus("количество "); cin>>a[i].kol;
  cout<<Rus("масса "); cin>>a[i].mas;
  a[i].msr=a[i].mas/a[i].kol; cout<<Rus("средний вес багажа пассажира = ") <<a[i].msr <<"\n" <<"\n";
  s+=a[i].mas;} //общий вес вещей всех пассажиров
 ss=double(s/p); //общий средний вес одной вещи по всему списку
 cout<<Rus("общий вес вещей всех пассажиров = ") <<s <<"\n";
 cout<<Rus("общий средний вес одной вещи по всему списку = ") <<ss <<"\n";
 for (i=1; i<=p; i++)
   {if (fabs(ss-a[i].msr)>t)
	 {cout<<Rus ("Номер багажа ") <<i; cout<<"\n";}
   else cout<<Rus("нет такого багажа") <<"\n";}
 return(0);}
char* Rus(const char* str)
{AnsiToOem (str, str_rus);
return str_rus;}
xnise вне форума Ответить с цитированием
Старый 06.04.2010, 17:52   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Ошибка в выходе за границу
Цитата:
Сообщение от xnise Посмотреть сообщение
Код:
 ...
 for (int i=0; i<p; i++)
 {cout<<Rus("Введите данные о багаже ") <<i; cout<<Rus (" пассажира \n");
  cout<<Rus("количество "); cin>>a[i].kol;
  cout<<Rus("масса "); cin>>a[i].mas;
  cout<<Rus("средний вес багажа пассажира = ") <<a[i].mas/a[i].kol <<"\n" <<"\n";
  kol_vo+=a[i].kol;//общее кол-во вещей
  s+=a[i].mas;} //общий вес вещей всех пассажиров
 ss=double(s/kol_vo); //общий средний вес одной вещи по всему списку
 cout<<Rus("общий вес вещей всех пассажиров = ") <<s <<"\n";
 cout<<Rus("общий средний вес одной вещи по всему списку = ") <<ss <<"\n";
 bool b = false;
 for (i=0; i<p; i++)
   if (fabs(ss-a[i].mas/a[i].kol)>t)
	 {cout<<Rus ("Номер багажа ") <<i; cout<<"\n"; b=true;}
 if (b == false) cout<<Rus("нет такого багажа") <<"\n";
 return(0);}
 ...
Кроме того, среднюю массу не нужно включать в структуру по условию, а общий средний вес одной вещи по всему списку вычисляется не так
eoln вне форума Ответить с цитированием
Старый 06.04.2010, 20:06   #3
xnise
Пользователь
 
Регистрация: 23.11.2009
Сообщений: 26
По умолчанию Большое спасибо за подсказки.

Цитата:
Сообщение от eoln Посмотреть сообщение
Ошибка в выходе за границу

Кроме того, среднюю массу не нужно включать в структуру по условию, а общий средний вес одной вещи по всему списку вычисляется не так
После обработки мной алгоритм стал выглядеть так:
Код:
#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;
char* Rus(const char* str);
char str_rus[256];
struct bagg {int kol; float mas; double msr;};
int main()
{bagg a[11];
 float s=0; float kol_vo=0; int i, p=10;
 double ss; double t=0.3;
 for (int i=1; i<=p; i++)
 {cout<<Rus("Введите данные о багаже ") <<i; cout<<Rus (" пассажира \n");
  cout<<Rus("количество "); cin>>a[i].kol;
  cout<<Rus("масса "); cin>>a[i].mas;
  cout<<Rus("средний вес багажа пассажира = ") <<a[i].mas/a[i].kol <<"\n" <<"\n";
  kol_vo+=a[i].kol;//общее кол-во вещей
  s+=a[i].mas;} //общий вес вещей всех пассажиров
 ss=double(s/kol_vo); //общий средний вес одной вещи по всему списку
 cout<<Rus("общий вес вещей всех пассажиров = ") <<s <<"\n";
 cout<<Rus("общий средний вес одной вещи по всему списку = ") <<ss <<"\n";
 bool b = false;
 for (i=1; i<=p; i++)
   if (fabs(ss-a[i].mas/a[i].kol)>t)
	 {cout<<Rus ("Номер багажа ") <<i; cout<<"\n"; b=true;}
 if (b == false) cout<<Rus("нет такого багажа") <<"\n";
 return(0);}
char* Rus(const char* str)
{AnsiToOem (str, str_rus);
return str_rus;}
И пусть вас не смущает способ моей записи: "for (i=1; i<=p; i++)". Это позволяет в программе выводить порядковый номер пассажира и багажа не с нуля как это было бы при for (i=0; i<p; i++), а с единицы, но для этого нужно размерность массива увеличить на единицу, что я и сделал: "bagg a[11]". Теперь насчет средней массы, я ее включил в условие для того чтобы мне (как мне казалось) было легче контролировать результаты и ошибки программы.
Ну а в остальном огромное спасибо. И я искренне верю что пока в России есть такие умы, у России есть будущее и огромный потенциал.
xnise вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
структуры в си euhenia Помощь студентам 0 31.03.2010 16:34
структуры в С++ серг Общие вопросы C/C++ 2 13.12.2009 15:08
СТРУКТУРЫ frem-dag Общие вопросы C/C++ 9 05.12.2009 22:15
СТРУКТУРЫ aka_Kiss Общие вопросы C/C++ 13 16.11.2009 20:29
Структуры в СИ ManInBlack Помощь студентам 3 04.04.2009 19:08