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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2009, 16:47   #1
rododendron
 
Регистрация: 14.04.2009
Сообщений: 6
По умолчанию Что не так?

2 проги, обе работают, но не так как надо. Помогите найти ошибки!
I. задание:
для множества треугольников заданы две стороны и углы между ними.
составить прогу осуществляющую выбор из этого множества треугольников треугольника с
наименьшей площадью и нахождения его высоты, проведенной к первой стороне.
в проге использовать подпрогу поиска наименьшего члена последовательности.
в проге предусмотреть печать массива значений площадей треугольников и
значения высоты выделенного треугольника с наименьшей площадью
текст проги:
Код:
#include<iostream.h>
#include<conio.h>
#include<math.h>
int poisk(float **posl);
void main()
{clrscr();
int i,j;
float storona1[5],storona2[5],ygol[5];
for(i=0;i<5;i++)
 cin>>storona1[i]>>storona2[i]>>ygol[i];
float *posledov[3]={storona1,storona2,ygol};
float naimensii=poisk(posledov);
float h,a,b,y,s;
h=storona2[naimensii]*((ygol[naimensii]*3.14)/180);
cout<<"\n naimenshii:"<<naimensii;
cout<<"\n ego visota:"<<h;
for (j=0;j<5;j++)
 {for(i=0;i<3;i++)
  cout<<(*(*posledov+i)+j);
  a=(*(*posledov+0)+j);
  b=(*(*posledov+1)+j);
  y=(*(*posledov+2)+j);
  s=0.5*a*b*((y*3.14)/180);
  cout<<"\n ploshad "<<s;
 }
getch();
}
int poisk(float **posl)
{
 int i,j,n;
 float a,b,y,s,pl;
 a=(*(*posl+0)+1);
 b=(*(*posl+1)+1);
 y=(*(*posl+2)+1);
 s=0.5*a*b*((y*3.14)/180);
 for(j=0;j<5;j++);
  {
   a=(*(*posl+0)+j);
   b=(*(*posl+1)+j);
   y=(*(*posl+2)+j);
   pl=0.5*a*b*((y*3.14)/180);
   if (s<pl)
     s=pl;
  }
 return s;
};
II. задание:
напишите прогу, которая находит наибольший, наименьший элемент ряда и среднее
значение между ними. прога должна также сообщать номера позиций этих элементов.
произведите разбиение этой проги на необходимое число подпрограмм.
текст проги:
Код:
#include <conio.h>
#include <iostream.h>
#include <math.h>
void poisk(int);
void main()
{clrscr();
 int a[10];
 int i,max,min,n,p;
 float s;
 cout<<"vvedi 10 chisel \n";
 for(i=0;i<10;i++)
 cin>>a[i];
 poisk;
 s=(max+min)/2;
 cout<<"max= "<<max<<" nomer= "<<n<<'\n';
 cout<<"min= "<<min<<" nomer= "<<p<<'\n';
 cout<<"srednee znachenie= "<<s;
 getch();
}
void poisk(int a[10])
{int i,max,min,n,p;
 for(i=0;i<10;i++)
  {if (a[i]>max)
    {max=a[i];
     n=i;}
   else
    if (a[i]<min)
     {min=a[i];
      p=i;}
  }
 return;
};

Последний раз редактировалось MaTBeu; 14.04.2009 в 19:02.
rododendron вне форума Ответить с цитированием
Старый 14.04.2009, 20:08   #2
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

1.
Код:
#include<iostream.h>
#include<conio.h>
#include<math.h>

int poisk(float *posl);

void main()
{clrscr();
int i,j;
float storona1[5],storona2[5],ygol[5];
for(i=0;i<5;i++)
 cin>>storona1[i]>>storona2[i]>>ygol[i];

float s[5];
for(i=0;i<5;i++)
	s[i] = 0.5*storona1[i]*storona2[i]*sin(ygol[i]*3.14/180);

int naimensii=poisk(s);
float h = storona2[naimensii]*sin(ygol[naimensii]*3.14/180);

cout<<"\n naimenshii:"<<s[naimensii];
cout<<"\n ego visota:"<<h;

for (j=0;j<5;j++)
   cout<<"\n ploshad "<<s[j];
 
getch();
}

int poisk(float *posl)
{
 int j, i_min=0;
 float min = posl[0]; 
 for(j=1;j<5;j++);
  if(min>posl[j])
  {
	  min = posl[j];
	  i_min=j;
  }     
 return i_min;
};
Svetlag вне форума Ответить с цитированием
Старый 14.04.2009, 20:15   #3
Svetlag
Пользователь
 
Аватар для Svetlag
 
Регистрация: 24.02.2009
Сообщений: 85
По умолчанию

2.
Код:
#include <conio.h>
#include <iostream.h>
#include <math.h>
void poisk(int*);

int max,min,n,p;

void main()
{clrscr();
 int a[10];
 int i;
 float s;
 cout<<"vvedi 10 chisel \n";
 for(i=0;i<10;i++) cin>>a[i];
 poisk(a);
 s=(max+min)/2.;
 cout<<"max= "<<max<<" nomer= "<<n<<'\n';
 cout<<"min= "<<min<<" nomer= "<<p<<'\n';
 cout<<"srednee znachenie= "<<s;
 getch();
}

void poisk(int a[10])
{int i;
max = a[0]; min = a[0];
n=0; p=0;
 for(i=1;i<10;i++)
 {
    if (a[i]>max)
    {max=a[i];
     n=i;
	}   
    if (a[i]<min)
    {min=a[i];
     p=i;}
  }
 return;
};
Svetlag вне форума Ответить с цитированием
Старый 05.05.2009, 22:45   #4
rododendron
 
Регистрация: 14.04.2009
Сообщений: 6
По умолчанию

туплю, как косинус найти по 2-м сторонам или как то иначе?0_о
задание было такое:
определить класс "вектор", включающий координаты концов в 3-х мерном пространстве и следующие методы:
-ввод и вывод координат концов вектора
-сложение векторов с получением нового вектора
-вычитание векторов с получением нового вектора
-вычисление скалярного произведения 2-х векторов
-вычисление длины вектора
-вычисление косинуса угла между векторами
rododendron вне форума Ответить с цитированием
Старый 05.05.2009, 22:46   #5
rododendron
 
Регистрация: 14.04.2009
Сообщений: 6
По умолчанию

вот текст:

Код:
#include <conio.h>
#include <iostream.h>
#include <math.h>
class vector
{int x1,y1,x2,y2;
 float a,b,c;
 public:
 void input();
 void output();
 void sum();
 void sub();
 void scalar();
 void line();
 void cosinus();
};
 void vector::input()
{cin>>x1>>y1>>x2>>y2;}
 void vector::output()
{cout<<x1<<y1<<x2<<y2;}
 void vector::sum()
{a=sqrt(x1*x1+y1*y1);
 b=sqrt(x2*x2+y2*y2);
 c=sqrt(a*a+b*b+2*a*b*cos(a));
 cout<<"summa= "<<c;}
 void vector::sub()
{a=sqrt(x1*x1+y1*y1);
 b=sqrt(x2*x2+y2*y2);
 c=a-b;
 cout<<"raznost= "<<c;}
 void vector::scalar()
{a=sqrt(x1*x1+y1*y1);
 b=sqrt(x2*x2+y2*y2);
 c=a*b*cos(a);
 cout<<"proizvedenie= "<<c;}
 void vector::line()
{a=sqrt(x1*x1+y1*y1);
 b=sqrt(x2*x2+y2*y2);
 cout<<"dlina1= "<<a<<" dlina2= "<<b;}
 void vector::cosinus()
{a=sqrt(x1*x1+y1*y1);
 b=sqrt(x2*x2+y2*y2);
 c=cos(a);
 cout<<"cosius= "<<c;}
 void menu()
{clrscr();
 cout<<"1-input vector \n";
 cout<<"2-output vector \n";
 cout<<"3-sum vector \n";
 cout<<"4-sub vector \n";
 cout<<"5-scalar \n";
 cout<<"6-length \n";
 cout<<"7-cosinus \n";
 cout<<"esc-exit \n";
}
 void main()
{clrscr();
 vector object;
 char punct;
 while (punct!=27)
 {menu();
  punct=getch();
  clrscr();
  switch (punct)
  {case'1':object.input();
   getch(); break;
   case'2':object.output();
   getch(); break;
   case'3':object.sum();
   getch(); break;
   case'4':object.sub();
   getch(); break;
   case'5':object.scalar();
   getch(); break;
   case'6':object.line();
   getch(); break;
   case'7':object.cosinus();
   getch(); break;
   }
 }
}
rododendron вне форума Ответить с цитированием
Старый 05.05.2009, 22:48   #6
rododendron
 
Регистрация: 14.04.2009
Сообщений: 6
По умолчанию

не догоняю как дописать эту прогу:
Описать класс "почтовое отделение", содержащий
следующую информацию:
-название района;
-номер почтового отделения;
-индекс;
-адрес;
-номер телефона.
В программе предусмотреть:
-создание массива объектов заданного класса;
-вывод на экран массива объектов в виде таблицы 1:
___________________________________ ________
|название |номер |индекс|адрес|номер |
|района |почт.отд.| | |телефона|
|_________|_________|______|_____|_ _______|
| | | | | |
-упорядочение массива объектов по возрастанию
индексов и вывод его в виде таблицы 1;
-формирование нового массива объектов,
содержащего список почтовых отделений
конкретного района, и вывод полученного
массива в виде таблицы 2:
_________________________________
|номер |индекс|адрес|номер |
|почт.отд.| | |телефона|
|_________|______|_____|________|
| | | | |
-создание меню для проверки всех действий
над массивом объектов заданного класса

Код:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#define k 3
class post
{char r[20], n[20], i[20], a[20], t[20];
 int ;
 public:
   void setr(char sr[20])
   {strcpy(r,sr);}
   void setn(char sn[20])
   {strcpy(n,sn);}
   void seti(char si[20])
   {strcpy(i,si);}
    void seta(char sa[20])
   {strcpy(a,sa);}
    void sett(char st[20])
   {strcpy(t,st);}
   char *getr()
   {return r;}
   char *getn()
   {return n;}
   char *geti()
   {return i;}
   char *geta()
   {return a;}
   char *gett()
   {return t;}
   mas[k];
} 
 void input()
{char str[20];
 int b,c,d,e,g;
 for (int i=0;i<k;i++)
 {gets(str);
  mas[i].setr(str);
  cin>>b;
  mas[i].setn(str);
  cin>>c;
  mas[i].seti(str);
  cin>>d;
  mas[i].seta(str);
  cin>>e;
  mas[i].sett(str);
  cin>>g;
  }
 }
void menu()
{clrscr();
 cout<<" \n";
 cout<<"esc-exit \n";
}
void main()
{clrscr();
post object;
 char punct;
 while (punct!=27)
 {menu();
  punct=getch();
  clrscr();
 }
}
rododendron вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что не так? Alexcomeback Общие вопросы C/C++ 9 07.04.2009 23:14
Что не так? Viento Microsoft Office Excel 3 30.01.2009 14:38
Подскажите что не так... SynonymMixer Работа с сетью в Delphi 10 26.01.2009 23:49
Что в коде не так? Simply-Art Общие вопросы Delphi 3 08.07.2007 19:32
Что-то не так Radiofuck Помощь студентам 2 16.01.2007 22:06