رفتن به مطلب

رفع اشکال c++


poor!a

ارسال های توصیه شده

ممنون از راهنمایی تون.تونستم add و sort برنامه رو بنویسم.

به این صورت

void add (string a[],string b[],string c[],float d[],int )

{

cout

for(int i=0;i

{

cout

cin>>a>>b>>c>>d;

}

}

ولی اینجا تعداد افرادی که میگیره 3 نفره.نمیخوام یه مقدار ثابت باشه.میخوام هرتعداد که خواست وارد کنه.میخوام بپرسه که وارد کردن اطلاعات افراد ادامه داشته باشه یا نه و در ابتدای برنامه تعداد افراد مشخص نباشه.

نمیدونم منظورم رو رسوندم یا نه.

 

خوب شما بیاین از تخصیص حافظه پویا در برنامتون استفاده کنید / به این صورت که هنگام درج اطلاعات دانشجویان تعداد دانشجوها رو سوال کنه و بر اساس اون تعداد خانه حافظه را در نظر بگیره

 

برای تخصیص حافظه پویا از تابع malloc استفاده میشه


void * malloc ( size_t size );

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

موفق باشید :icon_gol:

لینک به دیدگاه
  • پاسخ 107
  • ایجاد شد
  • آخرین پاسخ

بهترین ارسال کنندگان این موضوع

بهترین ارسال کنندگان این موضوع

این تابعی که نوشتین برای c ولی من با c++ مینویسم.

سوال:

ما از سیستم درخواست حافظه میکنیم.بعد تست میکنیم ببینیم به ما داده یا نه؟درست میگم؟

اگه این طوری باشه،ممکنه یک بار به ما حافظه نده.اون موقع چه اتفاقی می افته؟

چرا باید از حافظه پویا استفاده کنیم؟مگه نمیشه این کار رو با ارایه هم انجام داد؟

لینک به دیدگاه
این تابعی که نوشتین برای c ولی من با c++ مینویسم.

سوال:

ما از سیستم درخواست حافظه میکنیم.بعد تست میکنیم ببینیم به ما داده یا نه؟درست میگم؟

اگه این طوری باشه،ممکنه یک بار به ما حافظه نده.اون موقع چه اتفاقی می افته؟

چرا باید از حافظه پویا استفاده کنیم؟مگه نمیشه این کار رو با ارایه هم انجام داد؟

 

اون تابع رو هم میتونید در سی پلاس پلاس استفاده کنید.

دقیقا میشه همین کار رو با آرایه انجام داد. ولی اگه حرفه ایی بخواین به قضیه نگاه کنید اینه که از حافظه پویا استفاده بشه / برای مثال شما یه ارایه 100 عضوی در نظر میگیرید شاید کاربر شما 5 تا از اون رو استفاده کنه 95 خانه اضافه اشغال شده و یا کاربر شما قصد داشته باشه 101 دانشجو وارد کنه !

 

کلا در برنامه نویسی راه ها و الگوریتم های زیادی برای رسیدن به هدف وجود داره / مهم اینه که کدوم کارایی بیشتری داره

 

موفق باشید :icon_gol:

لینک به دیدگاه
متوجه منظورتون نمیشم که چرا باید سیستم به ما حافظه نده

 

پس چرا باید تست کنیم ببینیم بهمون حافظه میده یا نه؟

مثلا:

int *x;

if (!x)

{cout

exit(1);}

مگه ما اینجا تست نکردیم که حافظه داده یا نداده؟

لینک به دیدگاه
پس چرا باید تست کنیم ببینیم بهمون حافظه میده یا نه؟

مثلا:

int *x;

if (!x)

{cout

exit(1);}

مگه ما اینجا تست نکردیم که حافظه داده یا نداده؟

 

برفرض که کاربر عددی وارد نکرده برای مدیریت خطا ما از برنامه خارج میشیم یا اینکه سیستم نتونست به اون میزانی که کاربر وارد کرده به ما حافظه بده و .. / البته این حدس خودمه و هیچ دلیل دیگه ای ندارم :icon_gol:

لینک به دیدگاه

ممنون.

این ضرب دو ماتریسه چرا متغییر k رو کوچکتر از 3 قرار میدیم؟


int mat1[2][3], mat2[3][4], mat3[2][4]={0} ;
int i,j,k,l ;
clrscr();
//read mat1
for(i=0 ; i<2 ; i++)
for(j=0 ; j<3 ;j++) {
printf("tenter mat1[%d][%d]: ",i,j);
scanf("%d",&mat1[i][j]) ;
}
//read mat2
for(i=0 ; i<3 ; i++)
for(j=0 ; j<4 ;j++) {
printf("enter mat2[%d][%d]: ",i,j);
scanf("%d",&mat2[i][j]) ;
}
//multiply mat1 by mat2
for(i=0 ; i<2 ; i++)
for(j=0 ; j<4 ;j++) {
mat3[i][j]=0 ;
for(k=0 ;k<3 ; k++)
mat3[i][j] = mat3[i][j]+mat1[i][k]*mat2[k][j];
}
برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

میخوام از clsec(); استفاده کنم ولی ارور میده.چکار باید بکنم.توی visual studio مینویسم.

لینک به دیدگاه
ممنون.

این ضرب دو ماتریسه چرا متغییر k رو کوچکتر از 3 قرار میدیم؟


int mat1[2][3], mat2[3][4], mat3[2][4]={0} ;
int i,j,k,l ;
clrscr();
//read mat1
for(i=0 ; i<2 ; i++)
for(j=0 ; j<3 ;j++) {
printf("tenter mat1[%d][%d]: ",i,j);
scanf("%d",&mat1[i][j]) ;
}
//read mat2
for(i=0 ; i<3 ; i++)
for(j=0 ; j<4 ;j++) {
printf("enter mat2[%d][%d]: ",i,j);
scanf("%d",&mat2[i][j]) ;
}
//multiply mat1 by mat2
for(i=0 ; i<2 ; i++)
for(j=0 ; j<4 ;j++) {
mat3[i][j]=0 ;
for(k=0 ;k<3 ; k++)
mat3[i][j] = mat3[i][j]+mat1[i][k]*mat2[k][j];
}[/left]


[/quote]

[left]
[/left]


[quote]کلا میشه طرز کار ضرب دو ماتریس رو توضیح بدین؟

[/quote]

برای مثال در ضرب دو ماتریس 3*4 و 4*5 جواب ما یک ماتریس 3*5 هست.
در برنامه که قرار دارین یک ماتریس 2*3 را با 3*4 ضرب میکنه و جوابش در ماتریس 2*4 قرار میده
مقدار k=3 قرار داده چون به تعداد ستون های ماتریس اول در تعداد سطرهای ماتریس دوم باید عمل ضرب انجام بشه

[quote name='tahmina']
این برنامه رو نوشتم ولی وقتی چاپ میکنه داده ها زیر هم قرار نمی گیرن.چرا؟


[code]
// join project.cpp : Defines the entry point for the console application.
//


#include "stdafx.h"
#include <iostream>
#include <string>
const int n=3;
using namespace std;
void add (string [],string[],string[],float [],int );
void sort (string [],string[],string[],float [],int );
void output(string [],string[],string[],float [],int );
int main()
{
string last_name[n];
string name[n];
string id[n];
float ave[n];
add(last_name,name,id,ave,n);
sort(last_name,name,id,ave,n);
output(last_name,name,id,ave,n);
cin.get();
}


//********************************************************




void add (string a[],string b[],string c[],float d[],int n)
{
cout<<"enter last name,name,id,average:"<<endl<<endl;
for(int i=0;i<3;i++)
{
cout<<i+1<<".";
cin>>a[i]>>b[i]>>c[i]>>d[i];
}
cout<<endl<<endl;
}




//********************************************************




void sort (string a[],string b[],string c[],float d[],int n)
{
float temp;
for (int j=1;j<n;j++)
for(int i=0;i<n-j;i++)
if (a[i]>a[i+1])
{
a[i].swap(a[i+1]);
c[i].swap(c[i+1]);
b[i].swap(b[i+1]);
temp=d[i];
d[i]=d[i+1];
d[i+1]=temp;
}
}




//********************************************************




void output(string a[],string b[],string c[],float d[],int n)
{
cout<<'\t'<<"last name"<<'\t'<<"name"<<'\t'<<"id"<<'\t'<<"average"<<endl;
cout<<"---------------------------------------------------------------";
for(int i=0;i<n;i++)
cout<<'\t'<<a[i]<<'\t'<<b[i]<<'\t'<<c[i]<<'\t'<<d[i]<<endl;
cin.get();
}

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

در ضمن متوجه منظورتون از clsec() نشدم!!

 

موفق باشید :icon_gol:

لینک به دیدگاه

سلام.

من شماره دانشجویی هارو نتونستم توی ارایه ذخیره کنم پس توی ارایه رشته ای زخیره کردم.حالا میخوام بر اساس شماره دانشجویی،دانشجوهارو مرتب کنم.نمدونم چطوری باید دو تا شماره دانشجویی رو باهم مقایسه کنم.

 

میخوام وقتی فامیلی یک دانشجو رو حذف میکنم تمام مشخصاتی که براش وارد شده هم حذف شه.چطوری؟

 

 

:ws36::ws36: :ws3:

لینک به دیدگاه
سلام.

من شماره دانشجویی هارو نتونستم توی ارایه ذخیره کنم پس توی ارایه رشته ای زخیره کردم.حالا میخوام بر اساس شماره دانشجویی،دانشجوهارو مرتب کنم.نمدونم چطوری باید دو تا شماره دانشجویی رو باهم مقایسه کنم.

 

میخوام وقتی فامیلی یک دانشجو رو حذف میکنم تمام مشخصاتی که براش وارد شده هم حذف شه.چطوری؟

 

:ws36::ws36: :ws3:

 

توجه داشته باشید که sort کردن یک آرایه ی رشته با sort کردن آرایه عددی هیچ تفاوتی نداره و همون منوالی که برای مرتب کردن آرایه عددی قبلا انجام میدادید انجام بدین!

 

برای سوال دومتون هم یک مثال واضح از سایت cplusplus‌ رو نگاه کنید کاملا واضح هست / اول باید رکورد اون دانشجو رو پیدا کنید و بعدش حذف!

 

مشاهده نمونه:

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

موفق باشید :icon_gol:

لینک به دیدگاه

دوباره سلام.

متوجه نمیشم کجاش مشکل داره.

میشه لطفا برام پیداش کنید.کلا درسته من اینطوری outputرو فراخوانی کردم.می خوام بعد از sort چاپشون کنه اینطوری درسته؟


// project2.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <string>
#include <windows.h>
using namespace std;
const int n=3;
void add (string [],string [],string [],float [],int );
void sort (string [],string[],string[],float [],int );
void last_name_sort(string [],string [],string [],float [],int );
void id_sort(string [],string [],string [],float [],int );
void ave_sort(string [],string [],string [],float [],int );
void output (string [],string[],string[],float [],int );
int main()
{

string a[n];
string b[n];
string c[n];
float temp;
float d[n];
add(a,b,c,d,n);
sort(a,b,c,d,n);

cin.get();
}
//**************************************************************
void add (string a[],string b[],string c[],float d[],int n)
{
cout<<"enter last name,name,id,average:"<<endl<<endl;
for(int i=0;i<3;i++)
{
cout<<i+1<<".";
cin>>a[i]>>b[i]>>c[i]>>d[i];
}
cout<<endl<<endl;
}
//*****************************************

void sort (string a[],string b[],string c[],float d[],int n)
{
int f;
cout<<endl<<"how do you want to sort information?"<<endl<<endl;
Sleep(500);
cout<<" "<<"2.by id"<<endl;
Sleep(500);
cout<<" "<<"3.by average"<<endl;
Sleep(500);
cin>>f;
switch(f)
{
case 1:
last_name_sort(a,b,c,d,n);
break;
case 2:
id_sort(a,b,c,d,n);
break;
case 3:
ave_sort(a,b,c,d,n);
break;

}

//*************************************************************
void last_name_sort(string a[],string b[],string c[],float d[],int n)
{
int g;
float temp;
for (int j=1;j<n;j++)
for(int i=0;i<n-j;i++)
if (a[i]>a[i+1])
{
a[i].swap(a[i+1]);
c[i].swap(c[i+1]);
b[i].swap(b[i+1]);
temp=d[i];
d[i]=d[i+1];
d[i+1]=temp;
}
void output(a,b,c,d,n);
}
//***************************************************************
void id_sort(string a[],string b[],string c[],float d[],int n)
{
int temp;
for (int j=1;j<n;j++)
for(int i=0;i<n-j;i++)

if (c[i].compare(c[i+1])>0)
{
c[i].swap(c[i+1]);
a[i].swap(a[i+1]);
b[i].swap(b[i+1]);
temp=d[i];
d[i]=d[i+1];
d[i+1]=temp;
}
void output(a,b,c,d,n);
}
//*****************************************************************

void add (string a[],string b[],string c[],float d[],int n)
{
int temp;
for (int j=1;j<n;j++)
for(int i=0;i<n-j;i++)

if (d[i]>d[i+1])
{
c[i].swap(c[i+1]);
a[i].swap(a[i+1]);
b[i].swap(b[i+1]);
temp=d[i];
d[i]=d[i+1];
d[i+1]=temp;
}
void output(a,b,c,d,n);
}

//*****************************************************************
void output(string a[],string b[],string c[],float d[],int n)
{
cout<<'\t'<<"last name"<<'\t'<<"name"<<'\t'<<"id"<<'\t'<<"average"<<endl;
cout<<'\t'<<"---------------------------------------------------------------"<<endl;
for(int i=0;i<n;i++)
cout<<"\t"<<a[i]<<"\t\t"<<b[i]<<"\t"<<c[i]<<"\t"<<d[i]<<endl;
cin.get();
}


لینک به دیدگاه
سلام.

من میخوام یه تابع بنویسم که دوتا ارایه رو در هم ضرب بکنه.ارایه هام اعداد n رقمی (حداکثر 50 رقمی) توشون ذخیره شده.

لطفا راهنماییم کنید.مرسی:w16:

 

با سلام / برنامه زیر مقادیر دو آرایه ی یک بعدی با 3 عنصر را از ورودی گرفته و سپس ضرب این دو آرایه را در یک آرایه دیگه ذخیره میکنه

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

موفق باشید :icon_gol:

لینک به دیدگاه
  • 2 ماه بعد...
  • 4 هفته بعد...

سلام دوستان

من یه برنامه نوشتم به زبان ++C و با visual studio

اما Ctrl+F5 (برای اجرای برنامه) رو که میزنیم.این پیام میاد.

کسی میتونه کمکم کنه؟

Untitled5626.png

لینک به دیدگاه

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • اضافه کردن...