تالار گفتمان مانشت
حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - نسخه‌ی قابل چاپ

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - NP-Cσмρℓєтє - ۱۱ اسفند ۱۳۹۳ ۰۴:۱۱ ب.ظ

شبیه سازی بارش باران ,برف,تگرگ,سنگ در C++
بفرمایید , کاری بود که از دستمون برمیومد
کد:
// ConsoleApplication2.cpp : Defines the entry point for the console application.
//
#include <string>
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include "windows.h"
#include <time.h>
using namespace std;

class rain {

public:
void rainfall (char a , int s) {


for (int p=1;p<=1000;p++)
{

srand(time(0));
int n = rand() % 6 + 1;
   for (int i = 1; i<= n; i++ )
   {

cout <<" ";
  
      }

     cout<<a;


   Sleep(s);
}


}

};

int main()
{

rain rain1;
char a;
int s;

int x;
  cout << "Please Choise Your Fall Type ==> 1-Rain 2-Snow 3-Hail 4-Custom : ";
  cin >> x;
  switch (x) {
    case 1:
    
      break;
    case 2:
      break;
    case 3:
         break;
    case 4:
         break;
    default:
      cout << "Unknown value";

  }

  if ( x == 1) {
      a = '|';
  } else if (x==2) {
  a = '*';
  } else if (x==3) {
  a = '0';
  } else if (x==4) {
      cout << "Enter Your Rain Shape Character Ex: ( | ) :";
        cin >>a ; }

      cout<<"Enter Fall Speed (The Smaller Number is Faster Ex:10) : ";
        cin>>s;

    rain1.rainfall (a , s);
    

_getche();
    return 0;
}


حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - hamsargol - 11 اسفند ۱۳۹۳ ۰۶:۲۶ ب.ظ

سلام نباید اینجا بپرسم اما یک سوالی داشتم که واقعا ضروریه
بدون goto چطور از توی چندتا for تودرتو بیرون آمد البته اجازه استفاده از یک فانکشن دارم فقط !!!
این کار ناممکنه؟
for i=0 to 4
for j=0 to 5
x++
قاعدتا جواب ۲۰ میشه اما با چه ترفندی میشه ازش بیرون اومد البته اینم نمیشه آخر فور ها بریک بزارم!!
ممنونم

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - one hacker alone - 11 اسفند ۱۳۹۳ ۰۸:۰۸ ب.ظ

سلام علیک
مونده به برنامه تون اگه فقط کارش اینه میتونید همونجا return کنید و برنامه به پایان برسه
حالا چرا از بریک استفاده نمیکنید؟

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - hamsargol - 11 اسفند ۱۳۹۳ ۰۸:۵۴ ب.ظ

ممنون
چون استاد طراحی پیاده سازی گفته اگه کسی این کارو کنه امتحان نمیده !!
فکر کنم ناممکنه...بازم تشکر

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - one hacker alone - 11 اسفند ۱۳۹۳ ۰۹:۴۲ ب.ظ

خب این return به کارتون نیومد؟
اگه نه پس یه بار دیگه شرایط رو بگید کامل

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - hamsargol - 11 اسفند ۱۳۹۳ ۱۰:۰۱ ب.ظ

اگه بتونم جوابشو پیدا کنم خیلی عالی میشه
سوال اینه که مثلا ۵ تا فور تودرتو داریم, بدون استفاده از goto از هر ۵ تا بیاییم بیرون !!!!فقط هم میشه توی حلقه داخلی کد اضافی نوشت وگرنه بازم با چندتا بریک میشد ...

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - F.N.44 - 11 اسفند ۱۳۹۳ ۱۰:۱۱ ب.ظ

نمونه کد دوم از گروه اول :
کد:
#include "stdafx.h"
#include <iostream>
#include <windows.h>

using namespace std;

    class downfall{
private:
    char chr;
public:
    


void gotoxy(int x,int y)  //copy
{
    COORD pos;
    HANDLE hConsole = GetStdHandle ( STD_OUTPUT_HANDLE );

    if (INVALID_HANDLE_VALUE != hConsole)
    {
        pos.X = x;
        pos.Y = y;

        SetConsoleCursorPosition( hConsole, pos );
    }
}


    void snow(char a)  
    {
        chr='*';
        gotoxy(0,6);
        for(int i=0;i<200;i++)
    {
        cout<<'*'<<' '<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' '<<'*'<<' ';
        Sleep(50);
              
            
    }
        
       }
    
    
    void rain(char a)
    {
        chr='|';
        gotoxy(0,6);
        for(int i=0;i<200;i++)
    {

        cout<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<'|'<<' '<<' ';
        Sleep(50);
        
            
            
    }
        
    }

void hail(char a)
    {
        chr='#';
        gotoxy(0,6);
        for(int i=0;i<200;i++)
        {
        cout<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' '<<'#'<<' ';
        Sleep(50);
        
        }


            }



    void stone(char a)
    {
        chr='@';
        gotoxy(0,6);
        for(int i=0;i<200;i++)
    {
        cout<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' '<<'@'<<' ';
        Sleep(50);
        
            
            
    }
        
    }

    
};
    int main(){
      cout<<"wellcome"<<endl;
      cout<<"If you want rain please insert |"<<endl;
      cout<<"If you want snow please insert *"<<endl;
      cout<<"If you want hail please insert #"<<endl;
      cout<<"If you want stone please insert @"<<endl;



        downfall m1;
        char chr;
        while(1)
        {
            cin>>chr;

            if(chr=='*')
                m1.snow(chr);
            else if(chr=='|')
                m1.rain(chr);
            else if(chr=='@')
                m1.stone(chr);
            else
                m1.hail(chr);
            
        }
        int a;
        cin>>a;
        return 0;
    }


RE: حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - MiladCr7 - 11 اسفند ۱۳۹۳ ۱۱:۱۶ ب.ظ

(۱۱ اسفند ۱۳۹۳ ۱۰:۰۱ ب.ظ)hamsargol نوشته شده توسط:  سوال اینه که مثلا ۵ تا فور تودرتو داریم, بدون استفاده از goto از هر ۵ تا بیاییم بیرون !!!!فقط هم میشه توی حلقه داخلی کد اضافی نوشت وگرنه بازم با چندتا بریک میشد ...
سلام.به نظرم یه متغیر boolean با مقدار فرضی false قبل از ورود به حلقه ها تعریف کنید.تو همه حلقه ها علاوه بر شرط مورد نظر خودتون false بودن مقدار این متغیر رو هم بررسی کنید (بین شرط مورد نظر در هر حلقه و false بودن مقدار این متغیر and قرار بدید).حالا توی داخلی ترین حلقه وقتی شرایط مورد نظر اتفاق افتاد مقدار این متغیر boolean رو true کنید و یه break بزنید اون وقت از تمام حلقه ها خرج میشیم.
(البته اگه منظور سوال این بوده باشه)

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - alizl70 - 11 اسفند ۱۳۹۳ ۱۱:۳۴ ب.ظ

دوستان عزیز اگه کسی سوالی در زمینه برنامه نویسی داشت من در این تاپیک پاشخگو هستم

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - Sse - 13 اسفند ۱۳۹۳ ۰۶:۱۸ ق.ظ

bool x = true;
int z = 0;
for (int i=0; x && i < 10; i++) {
for (int j=0;x && j < 10; j++) {
for (int k=0;x && k < 10; k++) {

z++;
x = false;
}
}
}
cout << z;

که با رسیدن به خط x= false، شرط تمام حلقه ها false میشه. البته کارش کاملا شبیه goto نیست (تا پایان کد میره و بعد شرط حلقه ها رو به ترتیب از آخرین حلقه به سمت بیرون بررسی میکنه و بلاخره از حلقه شامل خارج میشه) ولی خوب عملکرد منطقیش همونه به شرطی که x=false بعد از z++ رخ بده.
البته میتونی z++ و x= false رو بزاری تو یه تابع و زیر x=false یه خط return اضافه کنی که اینطوری دیگه لازم نیست نگران مکان z++ باشی.
البته اگه تابعم بازی Big Grin

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - hamsargol - 13 اسفند ۱۳۹۳ ۰۹:۱۹ ق.ظ

از همتون ممنونم که جواب میدید
گفته که به ترکیب فور ها دست نزنید,ینی شروط فور را نمیتونم and کنم اما بازم ممنونم مثل اینکه هیچ راهی نیست,اینترنتن زیر و رو کردم,هیچی پیدا نکردم...

حل تمرین سری دوم دوره ی برنامه نویسی- گروه اول - Sse - 13 اسفند ۱۳۹۳ ۰۳:۰۲ ب.ظ

اجازه ندارید کل قطعه کد حلقه رو تو یه تابع بذارید؟؟
اینطوری به ترکیب for ها هم دست نمیزنید. دستور return از کل حلقه ها (که تنها کد موجود تو تابعتون هستن) میاد بیرون.