PDA

View Full Version : مبتدی: برنامه جدول ضرب با استفاده از تابع



ferry_2020
پنج شنبه 01 اسفند 1392, 15:35 عصر
با عرض سلام و احترام
من این برنامه را نوشته ام،اما در قسمت آخر،خطا میدهد.
#include <iostream>
void getInput(int x[ ][10],int);
void print(int [10][10]);
void main()
{
int n[10][10];
getInput(n,10) ;
print(n);
}

void getInput(int x[ ][10],int L)
{
for(int i=0;i<L;i++)
for(int j=0;j< 10;j++)
x[i][j] = (i+1)*(j+1);
}

void print(int x[10][10])
{
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++)
cout<<x[i][j]<<"\t";
cout<<endl;
}
}

ممنون میشوم راهنمایی فرمائید

Salar Moghaddam
پنج شنبه 01 اسفند 1392, 17:15 عصر
بخش هایی که تغییر دادم // گذاشتم، در ضمن سعی کنید تو رفتگی ها رو رعایت کنید تا کدتون خوانا تر باشه

#include <iostream>

using namespace std; //

void getInput(int x[ ][10],int);
void print(int [10][10]);
int main()
{
int n[10][10];
getInput(n,10) ;
print(n);
}

void getInput(int x[ ][10],int L)
{
for(int i=0;i<L;i++)
for(int j=0;j< 10;j++)
x[i][j] = (i+1)*(j+1);
}

void print(int x[10][10])
{
for(int i=0;i<10;i++)
{
for(int j=0;j<10;j++) { //
cout<<x[i][j]<<"\t";
cout<<endl;
} //
}
}//


توضیح ندادید برنامه قراره چیکار کنه تا خطاهای منطقیش هم درست کنم.

ferry_2020
پنج شنبه 01 اسفند 1392, 23:01 عصر
خیلی ممنون از پاسخ شما
بزرگترین اشتباه من این بود که فراموش کرده بودم using namespace std رو در اول برنامه قرار بدم.البته من با void main هم امتحان کردم،مشکلی نداشت.باز هم متشکر از راهنمایی هاتون
فقط یه سوال دیگه:
من این کد رو هم نوشتم،ولی باز به خطا میخوره که نمیدونم مشکلش چیه! سوالش اینه :
برنامه اي بنویسید که با خواندن یک جمله از ورودي، تعداد کاراکترها و کلمات آن را شمارش نماید.

#include<iostream>
#include<string>
using namespace std ;
void main( )
{
int cn=0 , wn =0 ,i=0 ;
string str;
getline (cin,str);
while(str[i] !='\n')
{
if (str[i]==' ')
wn++;
cn++;
i++;
}
cout << wn+1<<cn;
}
ممنون میشم در این مورد هم راهنمایی بفرمائید

Salar Moghaddam
جمعه 02 اسفند 1392, 11:47 صبح
سعی کن از کامپایلر های بروز و استاندارد و کراس پلتفرم استفاده کنی(من از جی پلاس پلاس استفاده می کنم)، دلیل اینکه تابع مین رو به صحیح تغییر دادم بخاطر استاندارده و کاپایلر جی پلاس پلاس ازت اشکال میگیره اگه وید بسازی
اما کد:
(مثل قبل علامت گذاری کردم)

#include<iostream>
#include<string>

using namespace std ;
int main( ) // 1
{
int cn=0 , wn =0 ,i=0 ;
string str;
cout << "Enter str: "; // 2
getline (cin,str);
while(str[i] !='\0') // 3
{
if (str[i]==' ')
wn++;
else // 4
cn++;
i++;
}
cout << "Words: " << wn+1<< endl << "Chars: " <<cn; // 5
}


۱- توضیح داده شد.
۲- تعامل با کاربر خیلی مهمه! کاربر برنامه نویس نیست ... من که برنامه نویسی می کنم قبل از این که کد رو بخونم اجرا کردم، سه ساعت منتظر بودم تا اتفاقی (خطایی چیزی) بیافته :D
۳- اینجا خیلی مهمه! کارکتر آخر یک رشته '0\' عه نه 'n\'، کارکتر 'n\' حذف میشه.(این دلیل خطا بود، چون به خارج از مرز آرایه میرفتی)
۴- تا اینجا خطای نحوی کد برطرف شده بود، اما خطای منطقی داشت. من با وارد کردن ۴بار اسم خودم نتیجه : 4 23 میگرفتم در صورتی که اسم من ۵ حرفه و * ۴ میشه ۲۰، دلیلش این بود که شما کارکتر اسپیس هم حساب کرده بودید که خوب اون حساب نمیشه و باید به عنوان جدا کننده کلمه مورد استفاده بشه
۵- تو ۲ توضیح داده شد
۶- اکثر خطاهایی که میگیره بخاطر ناخوانایی کدته که خودت نمیتونی بخونی! دلیلش هم تورفتگیه! توریفتگی رو رعایت کن!
۷- لطفا برای سولات جدید تایپیک جدید باز کنید :)

ferry_2020
جمعه 02 اسفند 1392, 15:13 عصر
سلام و عرض احترام
خیلی خیلی از کمک و راهنماییتون متشکرم
واقعاً به من کمک کردید
فقط یه سوال
من اگه هیچ کاراکتری رو وارد نکنم و اینتر بزنم،تعداد کلمات رو 1 و تعداد کاراکترها رو 0 نشون میده.چرا وقتی کارکتری وارد نشده،تعداد کلمات 1 میشه؟یعنی کد خطا داره؟

Salar Moghaddam
جمعه 02 اسفند 1392, 22:06 عصر
#include<iostream>
#include<string>

using namespace std ;
int main( ) // 1
{
int cn=0 , wn =0 ,i=0 ;
string str;
cout << "Enter str: ";
getline (cin,str);
while(str[i] !='\0') // 3
{
if (str[i]==' ')
wn++;
else // 4
cn++;
i++;
}
cout << "Words: " << ((wn > 0) ? wn + 1 : 0) << endl << "Chars: " <<cn; //
}