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

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


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

Опубликовано

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

# 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 пользователей онлайн

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