آموزش ساخت برنامه چاپ مثلث با ستاره در c
ساخت مثلث با ستاره
حلقههای تکرار، یکی از مهمترین و ابتداییترین مسایل موجود در زبانهای برنامهنویسی هستند. یکی از بهترین مثالها برای تمرین حلقههای تکرار در زبان C، ساخت مثلث با کمک یک کارکتر خاص است که معمولا ستاره است. در ادامه، کد مربوط به چاپ مثلث با ستاره در C را خواهیم دید و آن را تحلیل خواهیم کرد.
برنامه چاپ مثلث با ستاره
#include <stdio.h> int main() { int i, j, rows; printf("Enter the number of rows: "); scanf("%d", &rows); for (i = 1; i <= rows; ++i) { for (j = 1; j <= i; ++j) { printf("* "); } printf("\n"); } return 0; }
در ابتدا یک عدد به عنوان تعداد سطرها از کاربر گرفته میشود. قرار است در سطر اول یک ستاره، سطر دوم دو ستاره و به همین ترتیب در سطر آخر n ستاره چاپ شود. پس به یک حلقه نیاز داریم که عملیات چاپ ستاره را به تعداد خطهای لازم، انجام دهد. بنابراین حلقهی اول به تعداد سطرها تکرار میشود.
حلقهی دوم، درون حلقه اول قرار میگیرد، و مشخص میکند که در هر سطر، چند ستاره چاپ شود. پس حلقهی دوم به ازای هر سطر اندازهی متفاوتی دارد که برابر با شمارهی سطر است و تعداد ستارهها را مشخص میکند. از آنجایی که شمارندهی حلقه اول i نام دارد. i میتواند حد بالای حلقهی دوم باشد. حال کافیست درهر گام حلقهی دوم یک ستاره چاپ کنیم.
وقتی که حلقهی دوم، یک سطر چاپ کرد و شمارندهی آن به انتها رسید، برنامه به ابتدای خط بعد میرود تا حلقهی دوم را مجددا با شمارندهی بعدی تکرار کند.
چاپ مثلث برعکس با ستاره
#include <stdio.h> int main() { int i, j, rows; printf("Enter the number of rows: "); scanf("%d", &rows); for (i = rows; i >= 1; --i) { for (j = 1; j <= i; ++j) { printf("* "); } printf("\n"); } return 0; }
ستارهی برعکس، کمی داستان متفاوتی دارد. در ستارهی برعکس، سطر اول، کاملا از ستاره تشکیل شده و سطر آخر یک ستاره دارد.
برای چاپ مثلث با ستاره در c ، حلقهی اول مشخص کنندهی تعداد سطرها و حد بالای تعداد ستارههای هر سطر است. در ابتدا تعداد سطرها به عنوان اندازهی حلقه اول مشخص میشود. چون قرار است ستارهی ما برعکس باشد، پس تعداد ستاره ها در هر سطر نسبت به سطر قبل، یک عدد کاهش مییابد. بنابراین، حلقهی اول نزولی است.
در حلقهی دوم با توجه به اینکه در کدام سطر هستید، تعداد ستارههای آن سطر مشخص میشود و به ازای هر گام، یک ستاره چاپ میشود. اجازه دهید با یک مثال کار را دنبال کنیم.
فرض کنید تعداد سطرها ۵ باشد. در ابتدا عدد ۵ به i داده میشود. سپس حلقهی دوم شروع میشود.که ۵ ستاره چاپ میکند.
در اینجا حلقهی اول یک گام برداشته و عدد i، از ۵ به ۴ کاهش پیدا میکند. سپس همان فرآیند ورود به حلقهی دوم و چاپ ستاره برای عدد ۴ هم تکرار میشود.
چاپ مثلث متساوی الاضلاع کامل با ستاره
شاید سختترین نوع چاپ مثلث با ستاره در c، همین مثلث باشد. یک بار دیگر به دو مثلث بالا برگردید، میبینید که تعداد سطرها دقیقا برابر تعداد ستارههای بزرگترین سطر است. و تعداد ستارههای هر سطر با سطر بعدی و قبلی خود فقط یکی اختلاف دارد.
ولی در مثلث کامل، به این صورت نیست. در این حالت، هر سطر دو ستاره بیشتر از سطر قبلی دارد. اگر یک مثلث کامل را تصور کنید، متوجه میشوید که ما علاوه بر ستاره، به فاصله هم نیاز داریم تا بتوانیم این مثلث را چاپ کنیم.
تعداد ستارههای بزرگترین سطر، برابر است با دو برابر عدد ورودی منهای یک. فرض کنید عدد ۵ به عنوان ورودی به برنامه داده شده است. این یعنی بزرگترین سطر، ۹ ستاره دارد.
در ابتدا عدد۵ به عنوان n مشخص میشود. اولین گام حلقهی اول شروع میشود: برای سطر اول، ۴ فاصله احتیاج داریم و یک ستاره. در سطر دوم، سه فاصله احتیاج داریم و سه ستاره ، در سطر سوم دو فاصله و پنج ستاره و الی آخر…
پس تعداد فاصلهها، برابر است با n منهای شماره سطر
#include<stdio.h> // include stdio.h int main() { int n; printf("Enter number of lines: "); scanf("%d", &n); printf("\n"); // loop for line number of lines for(int i = 1; i <= n; i++) { // loop to print leading spaces in each line for(int space = 0; space <= n - i; space++) { printf(" "); } // loop to print * for(int j = 1; j <= i * 2 - 1; j++) { printf(" * "); } printf("\n"); } return 0; }
در نهایت میتوانید در مکتب خونه به زبان های C و C++ مسلط شوید.