PDA

View Full Version : سوال: پر کردن ارایه و مرتب سازی با استفاده از اشاره گر؟



ehsan7031
شنبه 09 خرداد 1394, 14:40 عصر
سلام دوستان وقت بخیر...
دوستان ته ترمه لطفا کمک کنید خودم هر کار کردم نتونستم دو تا سوال دارم لطفا کمک کنید.
1-یک ارایه با استفاده از اشاره گر پر شود و مرتب شود و با استفاده از اشاره گر تهش در خروجی چاپ شود.
2-یک ماتریس چند در چند با استفاده از اشاره گرها اعدادش گرفته شود و فقط سطرهایش مرتب شود و در خروجی نمایش داده شود.
لطفا کمک کنید :گریه::ناراحت:

amirtork
شنبه 09 خرداد 1394, 16:31 عصر
سلام.
کد هایی که برای دو سوال بالا نوشتید رو درج کنید تا بهتر بشه راهنماییتون کرد( و اینکه کدوم قسمتشون رو مشکل دارید.)

ehsan7031
شنبه 09 خرداد 1394, 17:01 عصر
اقا همینارو نمیشه کلهم بدید؟مال من اشاره گر نداره اصلا همینطوری سادس

officer313
شنبه 09 خرداد 1394, 23:06 عصر
سلام واسه سوال اول
البته یه خورده ایراد داره که به کمک رفقا حلش میکنیم :


#include<iostream.h>
#include<conio.h>
void main()
{
int n;
cin>>n;
int **m;
int hold;
m=new int*[n];

for(int i=0;i<n;i++)
m[i]=new int[n];

for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cin>>m[i][j];

for ( int i = 0; i < n ; i++ )
for ( int j = 0; j < n; j++ )
if ( m[ j ] > m[ j + 1 ] ) {
hold = m[ j ];
m[ j ] = m[ j + 1 ];
m[ j + 1 ] = hold;
}

for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
cout<<m[i][j];
getch();
}

officer313
شنبه 09 خرداد 1394, 23:07 عصر
کد سوال اول رو گذاشتم البته یه خورده ایراد داره

officer313
شنبه 09 خرداد 1394, 23:08 عصر
نتیجه گرفتید به من هم اطلاع بدین لطفن

ehsan7031
سه شنبه 12 خرداد 1394, 16:06 عصر
سلام این کد سوال دوم هست فقط یک مشکلی توی مرتب سازی هستش کسی هست یک کمکی بکنه حلش کنیم یه ساعت دیگه میخوامش ..
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <stdafx.h>
using namespace std;
void input
(int arr[][2],int satr,int soton,int *p,int *z)
{
for(int i=0;i<satr;i++)
{
for(int j=0;j<soton;j++)
{ cout<<"Enter Matric value [" <<i<<"]"<<"["<<j<<"]:";
cin>>arr[i][j];
}
}
cout<<endl; cin.get();
}
void sort(int arr[][2],int satr,int soton,int *p,int *z)
{ int temp;
for(int a=0;a<satr;a++)
{
for(int b=0;b<soton;b++)
{
for(int i=0;i<satr;i++)
{
for(int j=0;j<soton;j++)
{ if(arr[a][b]<arr[i][j])
{ temp=arr[a][b];
arr[a][b]=arr[i] [j];
arr[i][j]=temp;
}
}
}
}
}
}
void show(int arr[][2],int satr,int soton)
{
for(int i=0;i<satr;i++)
{
for(int j=0;j<soton;j++)
{
cout<<arr[i][j]<<" ";
} cout<<endl;
}
}
int main(int argc, int argv[],int *)
{ int myarray[3][2];
int satr;
int soton;
int *p,*z;
cout<<"Enter satr : ";
cin>>satr;
p= new int[satr];
cout<<"Enter soton: ";
cin>>soton; z= new int[soton];
cout<<endl;
input(myarray,satr,soton,p,z);
sort(myarray,satr,soton,p,z);
show(myarray,satr,soton);
cout<<endl; cin.get();
}

ehsan7031
پنج شنبه 14 خرداد 1394, 11:14 صبح
کسی نیست کمک کنه؟
این دو تا کد رو هم ببینید نمیدونم چرا میره داخل سریع بعد اجرا شوت میکنه بیرون
"
#include <iostream>
#include <vector>
using namespace std;
//
void max_heapify(int*arr,int n,int i)
{
int left_child = 2 * i + 1;
int right_child = 2 * i + 2;
int large = i;

if (left_child < n && arr[large] < arr[left_child])
{
large = left_child;
}
if (right_child < n && arr[large] < arr[right_child])
{
large = right_child;
}
if (large != i)
{
int temp;
temp = arr[i];
arr[i] = arr[large];
arr[large] = temp;
max_heapify(arr, n, large);
}
}

//
void make_max_heap(int* arr, int n)
{
for (int i = n / 2 + 1; i >= 0; i--)
{
max_heapify(arr, n, i);
}
}
//Heap Sort
void heap_sort(int* arr, int n)
{
make_max_heap(arr, n);

int temp;
for (int i = n-1 ; i > 0; i--)
{
temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
max_heapify(arr, i, 0);
}
}

int main( )
{
int *a = new int[6];
a[0] = 8;
a[1] = 7;
a[2] = 9;
a[3] = 2;
a[4] = 5;
a[5] = -1;

heap_sort(a, 6);

for (int i = 0; i < 6; i++)
{
cout << a[i] << " ,";
}
cout << endl;

return 0;
}


#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
using namespace std;

int main()
{
float grad;
string firstName,lastName;
char ch;
fstream fp("input_file.txt",ios::in);
if(!fp)
{
cerr<<"File can not open!"<<endl;
exit(1);
}
while(fp>>firstName>>lastName>>grad)
{
cout<<firstName<<" "<<lastName<<" "<<grad<<endl;
}
return 0;
}

amirtork
پنج شنبه 14 خرداد 1394, 20:25 عصر
سلام.
من کد اول رو چک کردم. به درستی کار میکنه. compiler : gPlusPlus
#include <iostream>
#include <vector>
using namespace std;
//
void max_heapify(int*arr,int n,int i)
{
int left_child = 2 * i + 1;
int right_child = 2 * i + 2;
int large = i;

if (left_child < n && arr[large] < arr[left_child])
{
large = left_child;
}
if (right_child < n && arr[large] < arr[right_child])
{
large = right_child;
}
if (large != i)
{
int temp;
temp = arr[i];
arr[i] = arr[large];
arr[large] = temp;
max_heapify(arr, n, large);
}
}

//
void make_max_heap(int* arr, int n)
{
for (int i = n / 2 + 1; i >= 0; i--)
{
max_heapify(arr, n, i);
}
}
//Heap Sort
void heap_sort(int* arr, int n)
{
make_max_heap(arr, n);

int temp;
for (int i = n-1 ; i > 0; i--)
{
temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
max_heapify(arr, i, 0);
}
}

int main( )
{
int *a = new int[6];
a[0] = 8;
a[1] = 7;
a[2] = 9;
a[3] = 2;
a[4] = 5;
a[5] = -1;

heap_sort(a, 6);

for (int i = 0; i < 6; i++)
{
cout << a[i] << " ,";
}
cout << endl;

return 0;
}



و در مورد کد دوم هم کد به درستی کار میکنه. (فقط توجه داشته باشید که فایلی با نام input_file.txt رو در محل کد برنامه ایجاد کرده و با محتوایی با الگوی : در خط اول نام. در خط دوم نام خانوادگی و در خط سوم یک عدد اعشاری ذخیره کنید.)
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
using namespace std;

int main()
{
float grad;
string firstName,lastName;
char ch;
fstream fp("input_file.txt",ios::in);
if(!fp)
{
cerr<<"File can not open!"<<endl;
exit(1);
}
while(fp>>firstName>>lastName>>grad)
{
cout<<firstName<<" "<<lastName<<" "<<grad<<endl;
}
return 0;
}

ehsan7031
پنج شنبه 21 خرداد 1394, 14:23 عصر
شماا سوال منو متوجه نشدید عزیز.من برنامه رو ران میکنم خطا نداره ولی به محض اجرا از برنامه در میاد.میگیری چی میگم؟
اگه کسی اون ماتریس رو میدونه چطور باید مرتب کنم بهم بگه لطفا خیلی گیرم