حسین خسروی

وبلاگ دانشگاهی حسین خسروی، عضو هیات علمی دانشگاه صنعتی شاهرود

حسین خسروی

وبلاگ دانشگاهی حسین خسروی، عضو هیات علمی دانشگاه صنعتی شاهرود

حسین خسروی

باتوجه به محدودیتهای صفحه شخصی موجود در سایت دانشگاه، این بلاگ را راه اندازی کردم.
اطلاعیه های مربوط به دروسی که تدریس می کنم و تمرینها در این وبلاگ قرار خواهد گرفت.
برای آگاهی از مطالب مربوط به هر درس، در قاب زیر (طبقه بندی موضوعی) روی نام درس کلیک کنید.

پیوندهای روزانه

۲ مطلب با کلمه‌ی کلیدی «bubble sort» ثبت شده است

  • ۰
  • ۰

1. کار با توابع

1. برنامه‌ای شامل سه تابع به شرح زیر بنویسید:
‌أ.    تابع اول با نام ReverseNumber که یک عدد صحیح با تعداد ارقام نامعلوم دریافت کرده و معکوس آن را برگرداند مثلا به ازای 123456 باید عدد 654321 را برگرداند. (دقت کنید که عدد دریافت کند نه رشته. ضمنا تابع باشد نه اینکه داخل main یک برنامه بنویسید)

‌ب.    تابع دوم با نام ToUpper که یک رشته (char *) دریافت کرده و رشته متناظر آن با حروف بزرگ را برگرداند. مثلا اگر عبارت Peace Upon You O Aba-Abdellah  را بدهیم باید عبارت PEACE UPON YOU O ABA-ABDELLAH را تحویل دهد.

‌ج.    تابع سوم با نام Sort که یک آرایه‌ی اعشاری و طول آن را دریافت کرده و آن را از بزرگ به کوچک مرتب کند. دقت کنید که این تابع خروجی ندارد و در واقع خود آرایه ورودی را تغییر می دهد. امضای تابع می تواند به یکی از دو صورت زیر باشد:

void Sort(double* data, int length);
void Sort(double data[], int length);


(نکته: این سه تابع را باید قبل از main تعریف کنید یا اینکه امضای آنها را قبل از main و بدنه آنها را بعد از main تعریف کنید)
در قسمت main برنامه ای بنویسید که ابتدا یک عدد گرفته و به کمک تابع اول، معکوس آن را برگرداند، سپس یک رشته دریافت کرده و به کمک تابع دوم آن را به حروف بزرگ تبدیل کرده و نمایش دهد و در انتها یک آرایه‌ی 5 تایی گرفته و آن را مرتب کرده و نمایش دهد.

2. پیاده سازی تابع میانگین متحرک (Moving Average)

تابعی با نام smooth بنویسید که یک آرایه و طول آن را به عنوان ورودی بگیرد و عناصر آرایه را با تغییر دهد به این ترتیب که به جای عنصر k ام، میانگین سه عنصر (k-1, k, k+1) را جایگزین کند. این تابع هم خروجی ندارد و در واقع داده های خود آرایه ورودی را عوض می کند:

void Sort(double* data, int length);
void Sort(double data[], int length);
به عنوان مثال اگر آرایه ورودی به صورت زیر باشد:
{10, 15, 11, 9, 8}
خروجی زیر حاصل می شود (عنصر اول و آخر تغییر نمی کند):

{10, (10+15+11)/3, (15+11+9)/3, (11+9+8)/3, 8}


تابع میانگین متحرک Moving Average Function

تابع میانگین متحرک Moving Average Function


حالا برنامه ای بنویسید که آرایه عددی A را از فایل (data.txt) بخواند و تابع smooth راروی آنها اجرا کند و در نهایت در فایل دیگری (output.txt) آرایه های تغییر یافته را ذخیره کند.
اگر با متلب یا اکسل می توانید کار کنید، این دو آرایه را قبل و بعد از اعمال smoothing ترسیم کنید (در متلب با دستور plot).

موعد تحویل 1 آذر ماه

  • حسین خسروی
  • ۰
  • ۰

مثال دریافت n عدد اعشاری به کمک اشاره گر، مرتب سازی حبابی آنها و نمایش خروجی:


#include "stdafx.h"
#include <iostream>

int main()
{
	/*int x = 10, y = 21;
	float z = (float)y / x; //remove (float) and see the results 
	x = (int)z;
	printf("z = %.f", z);*/
	unsigned long N = 0;
	printf("Please enter N:\n");
GET_N:
	scanf_s("%ld", &N);
	if (N < 1)
	{
		printf("Invalid size, try again\n");
		goto GET_N;
	}
	printf("\nEnter %d Numbers: ", N);
	double* data = new double[N];

	memset(data, 0, N * sizeof(double));
	for (int i = 0; i < N; i++)
		scanf_s("%lf", &data[i]);
	
	for (int i = 0; i < N; i++)
	{
		for (int j = i + 1; j < N; j++)
		{
			if (data[j] > data[i])
			{
				double t = data[i];
				data[i] = data[j];
				data[j] = t;
			}
		}
	}

	printf("Sorted output:\n");
	for (int i = 0; i < N; i++)
		printf("%.2lf, ", data[i]);
	
	std::cin.ignore();
	getchar();
	return 0;
}
  • حسین خسروی