پرسش و پاسخ پیرامون برنامه‌نویسی

  • شروع کننده موضوع max
  • تاریخ شروع
ارسال‌ها
210
امتیاز
395
نام مرکز سمپاد
حلی ۲ #شوش
شهر
تهران
سال فارغ التحصیلی
95
دانشگاه
یک ترم تهران جنوب :)
رشته دانشگاه
نرم افزار
پاسخ : سئوال c++

n : تعداد ردیف ها ( ورودی )

فقط با Dev C++ نوشتم خودت ویرایشش کن :D

http://paste.ubuntu.com/6401991/
 

arminhatami

کاربر جدید
ارسال‌ها
3
امتیاز
0
نام مرکز سمپاد
jahad
شهر
ahwaz
پاسخ : سئوال c++

دادش دستت درد نکنه ولی باز همجنوری نشون میده یا کلا اینجوری نشون می ده؟
*
***
*****
*******
*********
من می خوام ستاره ها زیر هم باشه یا نمی شه؟
 
ارسال‌ها
210
امتیاز
395
نام مرکز سمپاد
حلی ۲ #شوش
شهر
تهران
سال فارغ التحصیلی
95
دانشگاه
یک ترم تهران جنوب :)
رشته دانشگاه
نرم افزار
پاسخ : سئوال c++

به نقل از arminhatami :
دادش دستت درد نکنه ولی باز همجنوری نشون میده یا کلا اینجوری نشون می ده؟
*
***
*****
*******
*********
من می خوام ستاره ها زیر هم باشه یا نمی شه؟

برنامه ای که دادم همچین چیزی چاپ میکنه :

61119314035631157938.png
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : سئوال c++

چجوری میشه از کتابخانه graphics.h توی محیط visual studio 2010 و Dev استفاده کرد؟ برای ویژوال، داخل project properties باید بریم؟ چجوری کتابخانه رو اضافه کنیم؟ برای dev به project اضافه کردم و به اسم کتابخانه هم ارور نداد اما به تابع main ارور میداد؟
میشه یه توضیح کامل بدید؟ ممنون
 
ارسال‌ها
210
امتیاز
395
نام مرکز سمپاد
حلی ۲ #شوش
شهر
تهران
سال فارغ التحصیلی
95
دانشگاه
یک ترم تهران جنوب :)
رشته دانشگاه
نرم افزار
پاسخ : سئوال c++

خب واسه یکی از دوستان همچین مشکلی پیش اومد دنبال راه حلش رفتم درست شد .
ببینید اول کتابخونه گرافیکو از اینجا دانلود کنید و بذاریدش تو پوشه include تو همونجایی که Dev ــتون نصبه
حالا اینو دانلود کنید و بذاریدش تو پوشه lib باز تو همونجایی که Dev ـتون نصبه
بعد یه newproject از نوع windows application بسازید و همه کدهایی که تو صفحه main بعد از ساخت project میاد رو پاک کنید و به جاش برنامه تون رو بزنید .
حالا از گزینه های بالای صفحه project رو انتخاب کنید و project option رو بزنید و شاخه ی parameters رو انتخاب کنید . یه پنجره س که 3 تا جای خالی داره . این کد رو کپی کنید تو قسمت linker :
کد:
-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32

ok کنید بعد برنامه رو اجرا کنید ; اجرا میشه :D
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : سئوال c++

به نقل از MajiiiiiD :
خب واسه یکی از دوستان همچین مشکلی پیش اومد دنبال راه حلش رفتم درست شد .
ببینید اول کتابخونه گرافیکو از اینجا دانلود کنید و بذاریدش تو پوشه include تو همونجایی که Dev ــتون نصبه
حالا اینو دانلود کنید و بذاریدش تو پوشه lib باز تو همونجایی که Dev ـتون نصبه
بعد یه newproject از نوع windows application بسازید و همه کدهایی که تو صفحه main بعد از ساخت project میاد رو پاک کنید و به جاش برنامه تون رو بزنید .
حالا از گزینه های بالای صفحه project رو انتخاب کنید و project option رو بزنید و شاخه ی parameters رو انتخاب کنید . یه پنجره س که 3 تا جای خالی داره . این کد رو کپی کنید تو قسمت linker :
کد:
-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32

ok کنید بعد برنامه رو اجرا کنید ; اجرا میشه :D

ممنون. درست شد
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

سلام. می خوام یک آرایه دو بعدی(16*10) رو به صورت رندوم، 20 تا خانه اش را انتخاب و مقدار آن ها را یک کنم و بقیه اعضای آرایه از قبل صفر شده اند. برنامه زیر را نوشتم اما اعداد 1 خوب پخش نمی شوند و همه ی آن ها در سه ردیف اول قرار می گیرند.
فکر کنم باید اندیس آرایه را دستور random داد و سپس 1 کرد. اما باید حواسمان باشد یک خانه دو بار مقدارش 1 نشود و شمرده شود(یعنی در انتها 19 خانه مقدار 1 گرفته اند در صورتی که فکر می کنیم 20 تا)
برنامه خودم به زبان پاسکال است. فهم آن ساده است. اگر متوجه نمی شوید بگویید کد سی پلاس پلاس آن را قرار دهم.

کد:
repeat
        begin
                for i:= 1 to 10 do
                begin
                        for j:= 1 to 16 do
                        begin
                                board[i,j] := random(2);
                                if (board[i,j]=1) then
                                        counter := counter+1;

                                if (counter=20) then
                                        break;

                        end;

                        if (counter=20) then
                                break;
                end;
        end
                until
        counter<=20;
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از mortez76 :
نمی دونم ولی اگه مشکلت فقط اینه که ببینی یه خانه ی آرایه قبلا چک شده یا نه میتونی یه آرایه ی boolian بگیری که هر وقت قبلا دیده شدند . مثلا ; vis[a[j] = true .
و توی if ات هم یه شرط بذار که vis اش برابر false باشه .
امید وارم کمکت کنه .

یک قسمتش اینی است که شما گفتی. ممنون. به کار میاد
 
ارسال‌ها
210
امتیاز
395
نام مرکز سمپاد
حلی ۲ #شوش
شهر
تهران
سال فارغ التحصیلی
95
دانشگاه
یک ترم تهران جنوب :)
رشته دانشگاه
نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

این برنامه ی کاملش ولی به بدیهی ترین راه ممکن !

http://paste.ubuntu.com/6516192/

البته برات چاپ هم میکنه !
میخوای رندومت تکراری نشن هم از تابع srand استفاده کن !
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از MajiiiiiD :
این برنامه ی کاملش ولی به بدیهی ترین راه ممکن !

http://paste.ubuntu.com/6516192/

البته برات چاپ هم میکنه !
میخوای رندومت تکراری نشن هم از تابع srand استفاده کن !

خیلی واضح نوشتید. ممنون
 

zahra.s

کاربر نیمه‌حرفه‌ای
ارسال‌ها
208
امتیاز
1,519
نام مرکز سمپاد
فرزانگان
شهر
کاشان
دانشگاه
صنعتی اصفهان
رشته دانشگاه
کامپیوتر-نرم افزار
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

بچه ها لطفن یکی بگه این برنامه چه مشکلی داره که ویژوال استدیو هی 1 رو چاپ میکنه؟هرکاری کردم نفهمیدم :-??
تابعي بنويسيد که مجموع n جمله از سري زير را محاسبه و برگرداند.
1 - 1/2! + 1/3! – 1/4! + …​

#include<iostream>
using namespace std;
int fact (int n);
float func ( int n)
{
float m = 0;
for( int i = 1 ; i<=n ; i++)
{
if( i % 2 == 0)
m = m - ( 1 / fact(i));
else
m = m + ( 1 / fact(i));
}
return m;
}
int fact(int n)
{
if( n == 1)
return 1;
else
return n * fact(n-1);
}
int main()
{
int n;
cin>>n;
cout<<func(n)<<endl;
return 0;
}

این برنامه رو چه جوری باید نوشت؟
تابعی بنویسید که دترمینان یک ماتریس را به صورت بازگشتی محاسبه کند و از آن در تابع main استفاده کنید. تعداد سطر و ستون ماتریس ماکزیمم 100 می باشد. :(

+جواب سوال اولیمو فهمیدم :D تابع fact هم باید float باشه :D
 

JB

کاربر خاک‌انجمن‌خورده
ارسال‌ها
1,447
امتیاز
4,766
نام مرکز سمپاد
هاشمی‌نژاد ۲ مشهد
دانشگاه
شهید بهشتی تهران
رشته دانشگاه
ریاضی و علوم کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

به نقل از zαн®α•s :
تابعی بنویسید که دترمینان یک ماتریس را به صورت بازگشتی محاسبه کند و از آن در تابع main استفاده کنید. تعداد سطر و ستون ماتریس ماکزیمم 100 می باشد. :(
کد:
/*
 * determinant.cpp
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 * 
 */

#include <iostream>
#include <cmath>
using namespace std;

int** submatrix(int **matrix, int order, int i, int j);
int determinant(int **matrix, int order);

int main()
{
	int i, j, order;
	int **matrix;

	cout<<"Enter the order of the matrix: ";
	cin>>order;

	matrix = new int* [order];	//Allocate memory for pointers (each pointer represents a row)
    cout<<"Enter the elements of the matrix: \n";
	for(i = 0; i < order; i++) {
			matrix[i] = new int[order]; //Each row contains 'order' number of elements
		for(j = 0; j< order; j++)
			cin>>matrix[i][j];
	}

	cout<<"\nDeterminant:"<<determinant(matrix, order);
	
	return 0;
}

int** submatrix(int **matrix, int order, int i, int j)
{

	int **subm;
	int p, q;				// Indexes for matrix
	int a = 0, b;		// Indexes for subm
	subm = new int* [order - 1];

	for(p = 0; p < order; p++) {
		if(p==i) continue;				//Skip ith row
			subm[a] = new int[order - 1];

			b = 0;

		for(q = 0; q< order; q++) {
				if(q==j) continue;		//Skip jth column
			subm[a][b++] = matrix[p][q];
		}
		a++; //Increment row index
	}
	return subm;
}

int determinant(int **matrix, int order)
{
	if(order == 1)
		return **matrix; //Return the element if the matrix is of order one

	int i;
	int det = 0;
	for(i = 0; i < order; i++)
		det += static_cast<int>(pow(-1.0,(int)i)) * matrix[i][0] * determinant(submatrix(matrix, order, i, 0), order - 1);
	return det;
}
 
ارسال‌ها
237
امتیاز
9,718
نام مرکز سمپاد
فرزانگان امین
شهر
اصفهان
سال فارغ التحصیلی
90
دانشگاه
دانشگاه تهران
رشته دانشگاه
عمران-مدیریت منابع آب
پاسخ : سئوال c++

آقا من یه سوال دارم، اگه میشه جواب بدین کارم بدجور گیره!!!
زبان C بخوایم ماتریسی رو تعداد آرایه هاشو کاربر وارد کنه error میده، یعنی اینو جواب میده
int mat[2][3]; m
ولی اینو جواب نمیده:
int r=3,c=2; m
int mat[r][c]; m

گفتن باید با پوینتر درستش کنی ولی من نفهمیدم! میشه راهنماییم کنین؟!!
 
ارسال‌ها
210
امتیاز
395
نام مرکز سمپاد
حلی ۲ #شوش
شهر
تهران
سال فارغ التحصیلی
95
دانشگاه
یک ترم تهران جنوب :)
رشته دانشگاه
نرم افزار
پاسخ : سئوال c++

خوب اینکه مشکلی نداره :
کد:
#include <iostream> 
using namespace std; 
int main() 
{ 
    int a=3,b=4;
    int mat[a][b];
}
 
ارسال‌ها
237
امتیاز
9,718
نام مرکز سمپاد
فرزانگان امین
شهر
اصفهان
سال فارغ التحصیلی
90
دانشگاه
دانشگاه تهران
رشته دانشگاه
عمران-مدیریت منابع آب
پاسخ : سئوال c++

به نقل از MajiiiiiD :
خوب اینکه مشکلی نداره :
کد:
#include <iostream> 
using namespace std; 
int main() 
{ 
    int a=3,b=4;
    int mat[a][b];
}


من میزنم error میده!

دقیقا همین کد رو کپی کردم جواب نمیده. با visual studio کد میزنم. مشکل از اون نیست؟
 
ارسال‌ها
3,981
امتیاز
32,567
نام مرکز سمپاد
فرزانگان امین
شهر
اصفهان
سال فارغ التحصیلی
1390
پاسخ : سئوال c++

به نقل از puzzle :
آقا من یه سوال دارم، اگه میشه جواب بدین کارم بدجور گیره!!!
زبان C بخوایم ماتریسی رو تعداد آرایه هاشو کاربر وارد کنه error میده، یعنی اینو جواب میده
int mat[2][3]; m
ولی اینو جواب نمیده:
int r=3,c=2; m
int mat[r][c]; m

گفتن باید با پوینتر درستش کنی ولی من نفهمیدم! میشه راهنماییم کنین؟!!
خب معلومه که جواب نمیده!!!
شما تو زبان سی که نمی تونی به صورت runtime سایز آرایه تو مشخص کنی که. باید سایز واسش مشخص باشه تا بدونه چه فضای حافظه ای رو بهش تخصیص بده.
وقتی میخوای سایز آرایه رو از ورودی بگیری باید از حافظه heap استفاده کنی. یعنی باید حافظه رو بهش تخصیص بدی.
اگه داری با زبان c کار می کنی باید از تابع malloc استفاده کنی و اگر از سی پلاس پلاس استفاده می کنی باید از new استفاده کنی.
اگر از سی استفاده می کنی باید این کارو بکنی:

کد:
#include<stdio.h>
#include<stdlib.h>
int main(){
int r = 3;
int b = 2;
	int** m = (int**)malloc(r * sizeof(int));
for(int i = 0 ; i < r ; i++){
	m[i] = (int*) malloc(b * sizeof(int)); 
}
return 0;
}
 
ارسال‌ها
210
امتیاز
395
نام مرکز سمپاد
حلی ۲ #شوش
شهر
تهران
سال فارغ التحصیلی
95
دانشگاه
یک ترم تهران جنوب :)
رشته دانشگاه
نرم افزار
پاسخ : سئوال c++

منظورت داینامیکه دیگه ؟!
 
ارسال‌ها
3,981
امتیاز
32,567
نام مرکز سمپاد
فرزانگان امین
شهر
اصفهان
سال فارغ التحصیلی
1390
پاسخ : سئوال c++

به نقل از MajiiiiiD :
منظورت داینامیکه دیگه ؟!
بله دارم در مورد dynamic memory allocation صحبت می کنم دیگه!
بعد در زبان سی حتی این هم پذیرفته نیست که شما یه عدد ثابت رو در یه متغیر بریزی و اون رو به سایز آرایه ت نسبت بدی. اینو نمی پذیره.
 

Blest Girl

کاربر نیمه‌حرفه‌ای
ارسال‌ها
262
امتیاز
2,202
نام مرکز سمپاد
فرزانگان
شهر
تهران
سال فارغ التحصیلی
1391
رشته دانشگاه
هوش مصنوعی و رباتیک
پاسخ : سئوال c++

به نقل از arminhatami :
دادش دستت درد نکنه ولی باز همجنوری نشون میده یا کلا اینجوری نشون می ده؟
*
***
*****
*******
*********
من می خوام ستاره ها زیر هم باشه یا نمی شه؟

این کد در اصل کد چاپ لوزی بوده که من قسمت چاپ پایین لوزی رو کامنت کردم

کد:
#include <iostream>
using namespace std;

void PrintDiamond(int iSide) 
{
    
    int iSpaces = iSide;
    int iAsterisks = 1;
    // Output the top half of the diamond
    for (int iI = 0; iI < iSide; iI++) 
	{
        for (int iJ = 0; iJ < iSpaces; iJ++) 
		{
            cout << " ";
        }
        for (int iJ = 0; iJ < iAsterisks; iJ++) 
		{
            cout << "*";
        }
        cout << endl;
        iSpaces--;
        iAsterisks += 2;
    }
    // Output the bottom half of the diamond
   /* for (int iI = 0; iI <= iSide; iI++) 
	{
        for (int iJ = 0; iJ < iSpaces; iJ++) 
		{
            cout << " ";
        }
        for (int iJ = 0; iJ < iAsterisks; iJ++) 
		{
            cout << "*";
        }
        cout << endl;
        iSpaces++;
        iAsterisks -= 2;
    }*/
}

int main()
{
    // Print a diamond with side = n
	int n;
	cin>>n;
    PrintDiamond(n);
	cin.ignore();
	cin.get();
    return 0;
}


n ای هم که کاربر وارد میکنه تعداد خطوط ستاره ها میشه
در ضمن برنامه هم تو ویژوال استودیو نوشته شده، مطابق کامپایلرتون تغییرش بدید.
 

daneshvar.amrollahi

کاربر حرفه‌ای
ارسال‌ها
327
امتیاز
130
نام مرکز سمپاد
راهنمایی حلی۲/دبیرستان حلی۱۰/دبیرستان علامه طباطبایی
شهر
تهران
سال فارغ التحصیلی
1397
مدال المپیاد
کامپیوتر
پاسخ : پرسش و پاسخ پیرامون برنامه نویسی

سلام. یه تابع می خوام 4 تا عدد بگیره تمام جایگشت هاش رو چاپ کنه. مثلا 4 1 7 8
بنویسه: 4 1 7 8 4 1 8 7 ...
 
بالا