Ошибка в программе. Надо найти среди прямоугольников есть ли квадраты? - C (СИ)
Формулировка задачи:
здравствуйте!
подскажите пожалуйста в чем ошибка..."надо найти среди прямоугольников есть ли квадраты? "
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
int pr(float a,float b,float *p,float *s,float *r)
{if(a<0 && b<0)
return 0;
else
{*p=(a+b)*2;
*s=a*b;
*r=sqrt(pow(a,2)+pow(b,2))/2;
return 1;
}
}
void main()
{ float a[5][2];
float s[5],p[5],r[5];
int i;
for(i=0;i<5;i++)
{printf ("\n vvedite dliny %d pr : ",i+1);
scanf("%f",&a[i][0]);
printf("\n vvedite shiriny %d pr : ",i+1);
scanf("%f",&a[i][1]);
if(pr(a[i][0],a[i][1],&p[i],&s[i],&r[i])==1)
{
printf("\n perimetr=%f",p[i]);
printf("\n ploshad=%f",s[i]);
printf("\n radius=%f",r[i]);
for(i=0;i<5;i++)
if(a==b) // компилятор пишет что не понимает символ b,хотя я и int пробовал вводить,всё равно ругается..
{ printf("\n kvadrat !");}
else
printf("\n net tarogo!");}[/COLOR]
}
getch (); }Решение задачи: «Ошибка в программе. Надо найти среди прямоугольников есть ли квадраты?»
textual
Листинг программы
#include <iostream.h>
#include <string.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
int pr(float a,float b,float *p,float *s,float *r)
{if(a<0 && b<0)
return 0;
else
{*p=(a+b)*2;
*s=a*b;
*r=sqrt(pow(a,2)+pow(b,2))/2;
return 1;
}
}
void main()
{ float a[5][2];
float s[5],p[5],r[5];
int i;
for(i=0;i<5;i++)
{printf ("\n vvedite dliny %d pr : ",i+1);
scanf("%f",&a[i][0]);
printf("\n vvedite shiriny %d pr : ",i+1);
scanf("%f",&a[i][1]);
if(pr(a[i][0],a[i][1],&p[i],&s[i],&r[i])==1)
{
printf("\n perimetr=%f",p[i]);
printf("\n ploshad=%f",s[i]);
printf("\n radius=%f",r[i]);
if(a[i][0]==a[i][1]) // компилятор пишет что не понимает символ b,хотя я и int пробовал вводить,всё равно ругается..
{ printf("\n kvadrat !");}
else
printf("\n net tarogo!");}
}
getch (); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы:
iostream.hдля работы с потоками ввода-вывода;string.hдля работы со строками;conio.hдля работы с клавиатурой и мышью;stdio.hдля работы с стандартными вводом и выводом;math.hдля работы с математическими функциями.
- Функция
prпринимает на вход три аргумента типаfloat:a,bи указатели на переменныеp,s,r. Внутри функции происходит проверка на отрицательностьaиb. Если оба аргумента отрицательны, функция возвращает0. В противном случае, в переменныеp,sиrприсваиваются соответствующие значения и функция возвращает1. - Функция
mainявляется точкой входа в программу. Она объявляет массивaразмером 5х2, массивыp,s,rиi.- С помощью цикла
forпроисходит заполнение массиваaзначениями, введенными пользователем. - После заполнения массива
a, вызывается функцияprдля каждого элемента массива. - Если функция
prвернула1, выводятся значенияp,sиr. - Если
a[i][0]равноa[i][1], выводится сообщениеkvadrat. В противном случае выводится сообщениеnet tarogo.
- С помощью цикла
- Компилятор выдает ошибку, потому что переменная
bне определена в момент обращения к ней в строкеif(a[i][0]==a[i][1]). В данном случае, необходимо объявить переменнуюbкакfloatперед использованием.