PDA

View Full Version : سوال: اعداد مارپیچ به زبان C++ (تمرین)



farhad14
جمعه 01 آذر 1392, 19:15 عصر
سلام
یه برنامه ای میخوام بنویسم به صورت اعداد مارپیچ ، یه چیزهایی هم نوشتم ولی اینجوری اگه پیش بره باید 100تا فور و اینجور چیزا بزارم ، اگه کسی بلده اعداد رو طبق شکلی که اتچ می کنم چاپ کنه ممنون می شم.
(یک n از ورودی گرفته و نشان دهنده تعداد سطر و ستون باشد و در خروجی شکل را به صورت زیر چاپ کند.)113135

#include<iostream>
using namespace std;
int main()
{
int arr[100][100],n,d;
cin>>n;
d=n*n;
for(int j=1;j<=n;j++) {
arr[1][j]=j;
cout<<arr[1][j]<<"\t";
}
cout<<endl;
int k=(n*2)-2;
for(int i=n+1;i<=k;i++){
arr[i][n]=i;
cout<<arr[i][n]<<" "<<endl;
}
int f=(n*3)-2;
for(int i=f;i>k;i--){
arr[i][n]=i;
cout<<arr[i][n]<<"\t";
}

return 0;
}

ehsannasri251
یک شنبه 03 آذر 1392, 22:53 عصر
فکر منم مشغول کردی داداش البته من زیاد c++ کار نکردم ولی مشتاقم بتونم حلش کنم یا حل اساتیدو ببینم

Vitallity
دوشنبه 04 آذر 1392, 01:25 صبح
#include <iostream>

using namespace std;

int **getArr(int row, int col) {
int** arr = new int* [row];
for (int i = 0; i < row; i++) { arr[i] = new int[col]; }
return arr;
}

void deleteArr(int **arr, int row) {
for (int i = 0; i < row; i++) { delete [] arr[i]; }
delete [] arr;
}

void showMatrix(int **arr, int row, int col) {
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout.width(4);
cout << arr[i][j];
}
cout << endl;
}
}

void fillMatrix(int **arr, int row, int col) {
int i, j, d, di, dj;

d = 1; i = 0; j = 0; di = 0; dj = 0;
while (d <= row * col) {
for (j = dj; j < col - dj - 1; j++) {
arr[i][j] = d;
d++;
}

for (i = di; i < row - di - 1; i++) {
arr[i][j] = d;
d++;
}

for (j = col - dj - 1; j > dj; j--) {
arr[i][j] = d;
d++;
}

for (i = row - di - 1; i > di; i--) {
arr[i][j] = d;
d++;
}
di++; dj++; i++;
}
}


void processMatrix(int row, int col) {
int** arr = getArr(row, col);
fillMatrix(arr, row, col);
showMatrix(arr, row, col);
deleteArr(arr, row);
}


void getSizeFromUser() {
int row, col;
cout << "How many rows: ";
cin >> row;
cout << "How many columns: ";
cin >> col;
processMatrix(row, col);
}

int main(int argc, char *argv[]) {
getSizeFromUser();
return 0;
}