PDA

View Full Version : سوال: سه ارور در ویژوال 2010



nima.ebrazi
سه شنبه 14 مرداد 1393, 17:24 عصر
#include "stdafx.h"
#include <stdio.h>


long int integerPower( long int base , long int exponent )


int main()
{
long int base;
unsigned int exponent;
long int pow;




printf("Enter base , exponent: ");
scanf("%ld\t%ld" ,&base ,&exponent);


pow = integerPower( base ,exponent );


printf("Result= %ld" ,pow);


return 0;
}//end main




long int integerPower( long int base,long int exponent )
{
long int base ,exponent ;
long int pow;


int i; //counter


for( i=1 ; i<= exponent ; i++ ){


pow = base * i;


}//end for


return pow;


}// end integerPower




ارور این:

C2144: syntax error : 'int' should be preceded by ';'
C2082: redefinition of formal parameter 'base'
redefinition of formal parameter 'exponent'

sa1378
سه شنبه 14 مرداد 1393, 18:29 عصر
من زیاد با ارور ها اشنا نیستم
ولی اسم متغییر pow رو عوض کنین توی برنامه شاید درست بشه
مثلا بزارین powe

کامبیز اسدزاده
سه شنبه 14 مرداد 1393, 20:17 عصر
#include "stdafx.h"
#include <stdio.h>


long int integerPower( long int base , long int exponent )


int main()
{
long int base;
unsigned int exponent;
long int pow;




printf("Enter base , exponent: ");
scanf("%ld\t%ld" ,&base ,&exponent);


pow = integerPower( base ,exponent );


printf("Result= %ld" ,pow);


return 0;
}//end main




long int integerPower( long int base,long int exponent )
{
long int base ,exponent ;
long int pow;


int i; //counter


for( i=1 ; i<= exponent ; i++ ){


pow = base * i;


}//end for


return pow;


}// end integerPower




ارور این:

C2144: syntax error : 'int' should be preceded by ';'
C2082: redefinition of formal parameter 'base'
redefinition of formal parameter 'exponent'


خب این چیه ؟


long int base, exponent;


شما یکبار در داخل ورودی هارو با نوعشون تعریف کردین و یکبار هم داخل بدنه !!! این کار اشتباهه یک بار تعریف کنید کافیه.
و اینکه این چیه ؟


long int integerPower(long int base, long int exponent)




با چه علامتی خاتمه پیدا کرده؟ هیچی !!! باید از نقطه ویرگول یا استفاده کنید.


long int integerPower(long int base, long int exponent);




و همچنین در end integerPower هم باید با نقطه ویرگول خاتمه بدین.

فکر میکنم این کد رو از جایی کپی کردین یا اینکه سر سری نوشتین بدونه رعایت قوانین علامت گذاری.
به هر حال اصلاح شدش به صورت زیر هست :


#include <stdio.h>
long int integerPower(long int base, long int exponent);




int main()


{


long int base;
unsigned int exponent;
long int pow;








printf("Enter base , exponent: ");
scanf_s("%ld\t%ld", &base, &exponent);




pow = integerPower(base, exponent);




printf("Result= %ld", pow);




return 0;


}










long int integerPower(long int base, long int exponent)
{
//long int base, exponent;
long int pow;




int i; //counter




for (i = 1; i <= exponent; i++){




pow = base * i;




}//end for




return pow;




};// end integerPower


و یک اشاره ای هم کنم سبک این کد نویسی کاملا غیر حرفه ای هستش برای اینکه بدنه و هیدر رو تعریف کنید از قوانین استفاده از فایل های مخصوص .h و .cpp به صورت جداگانه میتونید استفاده کنید اینطوری بهتره.
موفق باشید.

nima.ebrazi
سه شنبه 14 مرداد 1393, 20:47 عصر
آقا مرسی.
من اینو تو ویژوال 2010 دیباگ کردم.بازم خطا داد. یه بار دیگه نوشتم.من دو ماه برنامه نویس رو شروع کردم.هنوز اونقدر مهارت ندارم.این کد جدید:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>




long int integerPower(long int base , unsigned int exponent)
{


unsigned int i=1;
long int result = 1;


for(i=1 ; i<=exponent ; i++){


result *=base;

}//end for


return result;
}




int main(void)
{
int b;
unsigned int exp;




printf("Enter base: ");
scanf("%d" ,&b);


printf("Enter eponent: ");
scanf("%u" ,&exp);




printf("base^exponent = %ld" ,integerPower(b , exp));


getch();
return 0;




}//end main



درمورد مطلب آخر ممنون میشم بیشتر توضیح بدید...

کامبیز اسدزاده
سه شنبه 14 مرداد 1393, 21:10 عصر
آقا مرسی.
من اینو تو ویژوال 2010 دیباگ کردم.بازم خطا داد. یه بار دیگه نوشتم.من دو ماه برنامه نویس رو شروع کردم.هنوز اونقدر مهارت ندارم.این کد جدید:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>




long int integerPower(long int base , unsigned int exponent)
{


unsigned int i=1;
long int result = 1;


for(i=1 ; i<=exponent ; i++){


result *=base;

}//end for


return result;
}




int main(void)
{
int b;
unsigned int exp;




printf("Enter base: ");
scanf("%d" ,&b);


printf("Enter eponent: ");
scanf("%u" ,&exp);




printf("base^exponent = %ld" ,integerPower(b , exp));


getch();
return 0;




}//end main



درمورد مطلب آخر ممنون میشم بیشتر توضیح بدید...

خب به جای scanf از scanf_s استفاده کنید و همچنین به جای getch از getchar استفاده کنید مشکل حل خواهد شد.
دلیل : این موارد در نسخه های جدید و همچنین C++ 11 , 14 منسوخ شده بشمار میان.