PDA

View Full Version : اشکال در شناخت متغییرها



MrasoolF
دوشنبه 13 آذر 1391, 22:09 عصر
سلام. برنامه ای نوشتم که با استفاده از دو تابع که
یکی: (x,y) را از ورودی دریافت میکند.
دومی: (x1,y1) و (x2,y2) را از دریافت میکند و فاصله ی دو نقطه را بدست می آورد.

اما در تابع مین تعدادی نقطه را نوشته و از ما میخواهد که فاصله نزدیک ترین نقطه را به نقطه اصلی بدهد. (با استفاده از توابع بالا.

اما کدی که نوشتم به صورت زیر است اما نمیتوانم آن را اجرا کنم چون متغییر هایم را با اینکه تعریف کرده ام نمیشناسد.
کمک کنید. ممنون.
این کد من است.


// By: Rasool Fatemi

#include <stdio.h>
#include <conio.h>
#include <math.h>


int Read ( int x , int y ){

printf("Please enter the main point:\n\n");
scanf("%d%d" , &x , &y);
return ( x , y );

}

int Distance ( int x1 , int x2 , int y1 , int y2 ){

float dist;
dist = sqrt ( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );
return dist;

}

void main(){
int n, , x, y, x1, x2, y1, y2;
long int minimum = 9999;
Read ( x , y );

printf("Please enter number of points:\n\n\ " );
scanf("%d" , &n );

do {
printf("Please enter 1st point :\n");
scanf("%d%d" , &x1 , %x2);
minimum = Distance ( x , y , x1 , x2 );
}//End do.

int i = 1;
while ( i < n ){

printf("Please enter point number %d:\n" , i+1);
scanf("%d%d" , &x1 , %x2);
if ( minimum < Distance ( x , y , x1 , x2 ){

minimum = Distance ( x , y , x1 , x2 );


}//End if.


}//End while.

printf("\nThe nearest point is %d" , minimum);

}//End main.

مسعود اقدسی فام
دوشنبه 13 آذر 1391, 22:26 عصر
از یه تابع فقط می‌تونید یه عنصر رو برگردونید. تابع Read نمی‌تونه هم x و هم y برگشت بده. وقتی نوشتید int Read یعنی یه عدد صحیح رو برگردون. در ظاهر خطالیی نمی‌ده. چون پارانتز گذاشتید و با کاما جدا کردید که باعث می‌شه y به عنوان خروجی برگشت داده بشه. تازشم چیزی رو که برگشت دادید اصلا جایی ننوشید که. Read x y یعنی فقط این تابع رو صدا کن با این پارامترها.

x و y تابع اصلی با داخل اون تابع فرق داره. بهتره از متغیر مرجع استفاده کنید.




void Read( int &x, int &y )
{
printf
scanf
}


main()
{

Read(x,y);

}

MrasoolF
دوشنبه 13 آذر 1391, 22:41 عصر
ممونو. اما بازم جواب نداد یعنی همون 13 تا ارور قبلی. نمیدونم من هر کار مینکم همون 13 تا ارور رو میده که بیشترش عدم توانایی در شناخت متغییر هاست. یکیشون هم به تابع جذر گیر داده!
ممون میشم اگه خودتون کامپایلش کنید و ببینید دقیقاً مشکلش چیه.

H_G_G_I
دوشنبه 13 آذر 1391, 23:05 عصر
من دونه دونه اروری که دیدمو می گم شما خودت درست کن . درضمن IDE تون چیه . این خطا های ساده رو می گه و راحت می تونید رفعش کنید .
خط 12
شما دو تا مقدار رو می خای بگرگردونی ! دی نمی شه که .
خط 19
sqrt رو بکن sqrtf
خط 25
یدونه , اضافه گذاشتی
خط 36
while رو نذاشتی
خط 42
عوض & گذاشتی %
خط 43
پرانتز رو نبستی

:لبخندساده:
:لبخندساده:

مصطفی ساتکی
دوشنبه 13 آذر 1391, 23:23 عصر
شما دو تا مقدار رو می خای بگرگردونی ! دی نمی شه که .

چرا میشه اینجا جاش نیست.
pair<int,int> Read()
{
int x,y;
// calc x, y
return make_pair(x,y);
}
int main(int argc, char* argv[])
{
pair<int,int> a = Read();

cout << a.first << a.second << endl;
return 0;
{