Перейти к содержанию

помогите найти ошибку в двух задачах.


Рекомендуемые сообщения

первая.Дана последовательность из целых натуральных чисел.За последним числом вводиться нуль.Найти наименьшее их всех положительных чисел последовательности.

# include

using namespace std;

int main()

{

setlocale (LC_ALL,"Russian");

cout << "Введите через пробел последовательность из целых чисел,где последнее число 0 \n";

int t;

int min;

cin >> t;

if (t>0)

min=t;

else

min=0;

do

{cin >> t;

if ((t0))

min=t;

}

while (t!=0);

if (min==0)

cout << "нет положительных чисел"<

else

cout << "наименьшее положительное число: " << min <

system("pause");

return 0;

}

и вторая.Даны координаты трех точек на плоскости.Если они могут быть вершинами тупоугольного треугольника,вычислите его площадь.Выведите длины сторон в порядке убывания.

# include

# include

# include

using namespace std;

int main()

{

setlocale(LC_ALL,"Russian");

float x1,y1,x2,y2,x3,y3;

int a,b,c,p,s;

float z,x,v,j,n,m,k,l,o,t,y,p;// t,y,p-косинусы углов А,B,C

cout << "введите x1,y1,x2,y2,x3,y3 через пробел" << endl;

cin >> x1 >> y1;

cin >> x2 >> y2;

cin >> x3 >> y3;

z=x1-x2;

x=y1-y2;

v=x1-x3;

j=y1-y3;

n=x2-x3;

m=y2-y3;

a=sqrt(pow(z,2) + pow(x,2));

b=sqrt(pow(v,2) + pow(j,2));

c=sqrt(pow(n,2) + pow(m,2));

k=pow(a,2);

l=pow(b,2);

o=pow(c,2);

if ((a < (b+c)) && (b<(a+c)) && (c<(b+a)))

t=((l+o-k)/(2*b*c));//t-косинус А

y=((k+o-l)/(2*a*c));//y-косинус B

p=((k+l-o)/(2*a*B));//p-косинус P

if ((t<0)&&(l<0)&&(o<0))

if ((k>(l+o))&&(l>(k+o))&&(o>(k+l)))

p=((a+b+c)/2);

s=sqrt(p*(p-a)*(p-B)*(p-c);

if ((a>B)&&(a>c)&&(b>c))

cout <<"стороны равны a = " << a <<" b = " << b << " с = " << c << " s =" << s << " p = " << p << endl ;

else

if ((a>B)&& (a

cout <<"стороны равны c = " << c <<" a = " << a << " b = " << b <<" s =" << s << " p = " << p << endl ;

else

if ((a>c) && (a<B)

cout <<"стороны равны b = " << b <<" a = " << a << " с = " << c <<" s =" << s << " p = " << p << endl ;

else

cout <<"стороны равны c = " << c <<" b = " << b << " a = " << a <<" s =" << s << " p = " << p << endl ;

else

cout << "треугольник не тупоугольный!" << endl;

else

cout << "точки не являются вершинами треугольника!" << endl;

else

cout << "треугольник не существует вообще!" << endl;

system("pause");

return 0;

}

Ссылка на комментарий

   Koshak, какие ошибки вываливаются когда компилируешь? на какой строке?

   ЗЫ что такое то, как будто из задачника перенабрал и задания оставил. Uоловой своей тоже хоть задуматься да надо

Ссылка на комментарий

компилятор не выдает ошибок.эти программы я писал сам, но они работают правильно не всегда(т.е. код не верный) поэтому и прошу найти ошибку в коде.

Ссылка на комментарий

ну например в первой задаче.если я ввожу -3 -2 -1 0,то программа работает правильно.и выдает, что "положительных чисел нет".если ввести 3 2 1 0,то тоже работает правильно.но если ввести -5 4 -3 -2 2 0,то выдаст, что наименьшее 0.хотя должен выдать 2.

во второй задаче вообще ниодин тест не работает.

Ссылка на комментарий

Koshak

Ну логично ведь, первое число последовательности у тебя < 0, в min записываешь 0 в итоге, и теперь любое положительное число его не перезапишет, надо наверное или maxint записывать, или просто ждать положительные числа сразу не выбирая именно первое из них для инициализации переменных.

Ссылка на комментарий

cin >> t; // Ввели t

if (t>0) min=t; // инициализировали min

else min=0;

do {

cin >> t;

if (t>0) && ( ((t

min=t;

} while (t!=0);

if (min==0)

cout << "нет положительных чисел"<

else

cout << "наименьшее положительное число: " << min <

system("pause");

return 0;

Ссылка на комментарий
cin >> t; // Ввели t

if (t>0) min=t; // инициализировали min

else min=0;

do {

cin >> t;

if (t>0) && ( ((t

min=t;

} while (t!=0);

if (min==0)

cout << "нет положительных чисел"<

else

cout << "наименьшее положительное число: " << min <

system("pause");

return 0;

спасибо большое.программа работает правильно.....почти!она работает для всех тестов,кроме тех,которые начинаются с отрицательных чисел.например,я ввожу -10 8 -4 2 0 и программа выводит,что "нет положительных чисел"

Добавлено спустя 3 минуты 48 секунд:

cin >> t; // Ввели t

if (t>0) min=t; // инициализировали min

else min=0;

do {

cin >> t;

if (t>0) && ( ((t

min=t;

} while (t!=0);

if (min==0)

cout << "нет положительных чисел"<

else

cout << "наименьшее положительное число: " << min <

system("pause");

return 0;

спасибо большое.программа работает правильно.....почти!она работает для всех тестов,кроме тех,которые начинаются с отрицательных чисел.например,я ввожу -10 8 -4 2 0 и программа выводит,что "нет положительных чисел"

все,разобрался.в строчке if (t>0) && ( ((t

Добавлено спустя 7 минут 25 секунд:

помогите теперь со 2 задачей.Даны координаты трех точек на плоскости.Если они могут быть вершинами тупоугольного треугольника,вычислите его площадь.Выведите длины сторон в порядке убывания.

я значительно упростил код

# include

# include

# include

using namespace std;

int main()

{

setlocale(LC_ALL,"Russian");

float x1,y1,x2,y2,x3,y3;

float a,b,c,k,l,o,p,s;

cout << "введите черз пробел x1,y1,x2,y2,x3,y3 " << endl;

cin >> x1 >> y1;

cin >> x2 >> y2;

cin >> x3 >> y3;

a=sqrt(pow((x1-x2),2) + pow((y1-y2),2));

b=sqrt(pow((x1-x3),2) + pow((y1-y3),2));

c=sqrt(pow((x2-x3),2) + pow((y2-y3),2));

if(a<B)

{

int t=a;

a=b;

b=t;

}

if(a

{

int t=a;

a=c;

c=t;

}

if(b

{

int t=b;

b=c;

c=t;

}

k=pow(a,2);

l=pow(b,2);

o=pow(c,2);

if((a>=b+c)||(b>=a+c)||(c>=a+B)) cout << "Это не треугольник!";

if ((k>l+o)||(l>k+o)||(o>l+k))

{

p=((a+b+c)/2);

s=sqrt(p*(p-a)*(p-B)*(p-c));

cout <<"стороны равны a = " << a <<" b = " << b << " с = " << c << " s =" << s << " p = " << p << endl ;

}

else

cout <<"треугольник не тупоугольный!" <

system("pause");

return 0;

}

беда в том, что программа работает для любого треугольника.не важно,тупоугольный он или нет.

Ссылка на комментарий

2:


# include
# include
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
float x1,y1,x2,y2,x3,y3;
float a,b,c,k,l,o,p,s;
cout << "введите через пробел x1,y1,x2,y2,x3,y3 " << endl;
cin >> x1 >> y1;
cin >> x2 >> y2;
cin >> x3 >> y3;
a=sqrt(pow((x1-x2),2) + pow((y1-y2),2));
b=sqrt(pow((x1-x3),2) + pow((y1-y3),2));
c=sqrt(pow((x2-x3),2) + pow((y2-y3),2));
if(a<B)
{
float t=a;
a=b;
b=t;
}
if(a {
float t=a;
a=c;
c=t;
}
if(b {
float t=b;
b=c;
c=t;
}
k=pow(a,2);
l=pow(b,2);
o=pow(c,2);
if(a>=b+c) {cout << "Это не треугольник!"; system("pause"); return 0;}
if (k>l+o)
{
p=((a+b+c)/2);
s=sqrt(p*(p-a)*(p-B)*(p-c));
cout <<"стороны равны a = " << a <<" b = " << b << " с = " << c << " s =" << s << " p = " << p << endl ;
}
else
cout <<"треугольник не тупоугольный!" < system("pause");
return 0;
}
# include 

1:


#include
#include
using namespace std;

int main()
{
setlocale(LC_ALL,"rus");
int m=INT_MAX;
while(true)
{
int a;
cin>>a;
if(!a)
break;
if(a0) m=a;
}
if(m!=INT_MAX)
cout<<"Наименьшее положительное число = "< else cout<<"Положительных чисел нет\n"
system("pause");
return 0;
}
#include 

Проверь только на всякий случай.

Ссылка на комментарий
cin >> t; // Ввели t

if (t>0) min=t; // инициализировали min

else min=0;

do {

cin >> t;

if (t>0) && ( ((t

min=t;

} while (t!=0);

if (min==0)

cout << "нет положительных чисел"<

else

cout << "наименьшее положительное число: " << min <

system("pause");

return 0;

спасибо большое.программа работает правильно.....почти!она работает для всех тестов,кроме тех,которые начинаются с отрицательных чисел.например,я ввожу -10 8 -4 2 0 и программа выводит,что "нет положительных чисел"

Добавлено спустя 3 минуты 48 секунд:

cin >> t; // Ввели t

if (t>0) min=t; // инициализировали min

else min=0;

do {

cin >> t;

if (t>0) && ( ((t

min=t;

} while (t!=0);

if (min==0)

cout << "нет положительных чисел"<

else

cout << "наименьшее положительное число: " << min <

system("pause");

return 0;

спасибо большое.программа работает правильно.....почти!она работает для всех тестов,кроме тех,которые начинаются с отрицательных чисел.например,я ввожу -10 8 -4 2 0 и программа выводит,что "нет положительных чисел"

все,разобрался.в строчке if (t>0) && ( ((t

блин точно там присвоение получается ты знаешь я ВСГТУ в 2004 закончил, прости запамятовал :))))

Ссылка на комментарий
2:


# include
# include
using namespace std;
int main()
{
setlocale(LC_ALL,"Russian");
float x1,y1,x2,y2,x3,y3;
float a,b,c,k,l,o,p,s;
cout << "введите через пробел x1,y1,x2,y2,x3,y3 " << endl;
cin >> x1 >> y1;
cin >> x2 >> y2;
cin >> x3 >> y3;
a=sqrt(pow((x1-x2),2) + pow((y1-y2),2));
b=sqrt(pow((x1-x3),2) + pow((y1-y3),2));
c=sqrt(pow((x2-x3),2) + pow((y2-y3),2));
if(a<B)
{
float t=a;
a=b;
b=t;
}
if(a {
float t=a;
a=c;
c=t;
}
if(b {
float t=b;
b=c;
c=t;
}
k=pow(a,2);
l=pow(b,2);
o=pow(c,2);
if(a>=b+c) {cout << "Это не треугольник!"; system("pause"); return 0;}
if (k>l+o)
{
p=((a+b+c)/2);
s=sqrt(p*(p-a)*(p-B)*(p-c));
cout <<"стороны равны a = " << a <<" b = " << b << " с = " << c << " s =" << s << " p = " << p << endl ;
}
else
cout <<"треугольник не тупоугольный!" < system("pause");
return 0;
}
# include 

работает,но не правильно.она работает даже если я ввожу числа 3 0 0 4 0 5 хотя это координаты прямоугольного треугольника.программа должна вывести:"Треугольник не тупоугольный"

Ссылка на комментарий

ну,значит она работает.но есть еще,так сказать,мини ошибка:)когда вводишь координаты НЕ треугольника.т.е. например 0 0 0 0 0 0 программа выдает "Это не треугольник!треугольник не тупоугольный!"хотя должна выдавать просто "Это не треугольник"

Добавлено спустя 5 минут 17 секунд:

или если ввожу 4 0 0 2 0 3 то программа вообще выдает "Это не треугольник!стороны равны a=5 b=4 c=1 s=0 p=5"

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...