مقدمات برنامه نویسی با ++C

  • شروع کننده موضوع شروع کننده موضوع hasangolab
  • تاریخ شروع تاریخ شروع
پاسخ : مقدمات برنامه نویسی با ++C

یک توصیه:یه سری به سایت cplusplus.com بزنید نحوه استفاده از همه دستورارو داره
از پایه تا پیشرفته...........
چند تا کد هم با هر دستور زده تا با اون دستور بیشتر آشنا بشید.
B-)
 
پاسخ : مقدمات برنامه نویسی با ++C

سلام. داخل کامپایلر توربو ++C به دستور using namespace std ارور میگیره.(syntax error) کسی میدونه چرا؟ مشکل کامپایلره؟
ممنون میشم راهنمایی کنید
 
پاسخ : مقدمات برنامه نویسی با ++C

فک می‌کنم توربو رو قبل از این جریانات استاندارد 98 ساختن. یعنی وقتی ساختنش اصن خبری از namespace std نبوده! من پیشنهاد می‌کنم کامپایلرتون رو عوض کنید و از یه کامپایلر استاندارد امروزی استفاده کنید. مثلاً ++g چیز خوبیه!
 
پاسخ : مقدمات برنامه نویسی با ++C

Dev
CodeBlocks
اینا خیلی خوب و عالین!
 
پاسخ : مقدمات برنامه نویسی با ++C

Dev و Codeblocks رو دانلود کردم. کار منو راه انداختن. اما شنیدم Dev باگ داره. g++ کی در اومده؟
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از Daneshvar :
Dev و Codeblocks رو دانلود کردم. کار منو راه انداختن. اما شنیدم Dev باگ داره. g++ کی در اومده؟
اون Dev و CodeBlocks به اصطلاح یک IDE هستن و شما کد میزنی و F9 میزنی و اجرا میشه
ولی g++ یک کامپایلر c++ هستش بهتره بگم interpreter :دی
وقتی Dev رو نصب کنی g++ هم نصب میشه و تو این فولدر هستش
کد:
C:\Dev-Cpp\bin
g++ رو میتونی یه طوری ست کنی که از توی cmd بهش دسترسی داشته باشی و با دستور
کد:
g++ -o code code.cpp
کدت رو اجرا کنی ولی این کار زوده ، یکم که کار کردی با IDE های مختلف برو سراغ Gvim که یک Editor هستش و با اون کدت رو بزن و با g++ کامپایل کن
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از صُبهان :
اون Dev و CodeBlocks به اصطلاح یک IDE هستن و شما کد میزنی و F9 میزنی و اجرا میشه
ولی g++ یک کامپایلر c++ هستش بهتره بگم interpreter :دی
وقتی Dev رو نصب کنی g++ هم نصب میشه و تو این فولدر هستش
کد:
C:\Dev-Cpp\bin
g++ رو میتونی یه طوری ست کنی که از توی cmd بهش دسترسی داشته باشی و با دستور
کد:
g++ -o code code.cpp
کدت رو اجرا کنی ولی این کار زوده ، یکم که کار کردی با IDE های مختلف برو سراغ Gvim که یک Editor هستش و با اون کدت رو بزن و با g++ کامپایل کن

ok
 
پاسخ : مقدمات برنامه نویسی با ++C

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

تابع size تو string طول رشته رو برمی‌گردونه.
کد:
#include <iostream>
#include <string>
using namespace std;

int main() {
	string str;
	cin >> str;
	cout << str.size() << endl;
	return 0;
}

پ.ن. این چیزا رو با یه سرچ گوگل هم می‌تونید خیلی ساده‌تر پیدا کنید. مثلاً برای این کافی بود "c++ string size" رو سرچ می‌کردید. اولین لینکی که میاد توضیحات cplusplus.com در مورد تابع size ـه. مثال هم زده خودش.
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از کیارش :
تابع size تو string طول رشته رو برمی‌گردونه.
کد:
#include <iostream>
#include <string>
using namespace std;

int main() {
	string str;
	cin >> str;
	cout << str.size() << endl;
	return 0;
}

پ.ن. این چیزا رو با یه سرچ گوگل هم می‌تونید خیلی ساده‌تر پیدا کنید. مثلاً برای این کافی بود "c++ string size" رو سرچ می‌کردید. اولین لینکی که میاد توضیحات cplusplus.com در مورد تابع size ـه. مثال هم زده خودش.

ممنون
 
پاسخ : مقدمات برنامه نویسی با ++C

فرض کنیم یک متغیری از نوع صحیح داریم به اسم n. چطور می توان n امین کاراکتر یک رشته را چاپ کرد؟
 
پاسخ : مقدمات برنامه نویسی با ++C

کد:
#include<iostream>
#include<string>
using namespace std;
int main ()
{
	string s;
	int n;
	cin >> s;
	cin>>n;
	cout<<s[n-1]<<endl;
	return 0;
}

این ویژگی رشته مثل آرایه عه
حتما این رو نگاه کن
 
پاسخ : مقدمات برنامه نویسی با ++C

برنامه که دارم می نویسم قراره یک رشته بگیره. تعداد کاراکتر هایشو چاپ کنه و سپس برای اونایی که تعداد کاراکترهاشون فرد هستش، کاراکتر وسطیش رو چاپ کنه و برای اونایی که زوج هستش دو تا وسطی رو چاپ کنه. کسی میتونه بگه اشکال این برنامه چیه؟ خیلی روش فکر کردم اما نفهمیدم چرا اینجوریه
کد:
#include<iostream>
#include<string>
#include<conio.h>
using namespace std;

void odd(string str) //if the string length is odd 
{
 int j,square,n=str.size();
     
     if (n%2!=0)        //if n was odd
     {
         square = (n/2)+1; //finding the square number(middle one) that should be printed
     }
     
     for (j=0;j<=n;j++) /*breaking the string to characters */
     {
         if (square=j)
         {
          cout<<str[j]; //printing odd
          break;
         }
     }
     
}

void even(string str) 
{    
      int j,square1,square2,n=str.size();
      
     if (n%2==0) //if n is even
     { 
         square1 = (n/2); //first square that should be printed
         square2 = (n/2)+1; //second square that should be printed
     }
          
     for (j=0;j<=n;j++)
     {
        if (square1=j)
         {
          cout<<str[j]; //printing square1 square in string
         }
        if (square2=j)
        {
          cout<<str[j+1]; //printing square2 square in string/ 
          break;
        }   
     }

int main()
{
          
          int T;
          cin>>T;
          
          int n;
          string str;
          for (int i=0;i<T;i++)
          {
              cin>>str;
              n = str.size();
              cout<<n<<" ";
              
              if (n%2!=0)
              odd(str); 
              if (n%2==0)
              even(str);
              
              cout<<endl;
          }
          
          getch();
          return 0;
}
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از Daneshvar :
برنامه که دارم می نویسم قراره یک رشته بگیره. تعداد کاراکتر هایشو چاپ کنه و سپس برای اونایی که تعداد کاراکترهاشون فرد هستش، کاراکتر وسطیش رو چاپ کنه و برای اونایی که زوج هستش دو تا وسطی رو چاپ کنه. کسی میتونه بگه اشکال این برنامه چیه؟ خیلی روش فکر کردم اما نفهمیدم چرا اینجوریه
کد:
#include<iostream>
#include<string>
#include<conio.h>
using namespace std;

void odd(string str) //if the string length is odd 
{
 int j,square,n=str.size();
     
     if (n%2!=0)        //if n was odd
     {
         square = (n/2)+1; //finding the square number(middle one) that should be printed
     }
     
     for (j=0;j<=n;j++) /*breaking the string to characters */
     {
         if (square=j)
         {
          cout<<str[j]; //printing odd
          break;
         }
     }
     
}

void even(string str) 
{    
      int j,square1,square2,n=str.size();
      
     if (n%2==0) //if n is even
     { 
         square1 = (n/2); //first square that should be printed
         square2 = (n/2)+1; //second square that should be printed
     }
          
     for (j=0;j<=n;j++)
     {
        if (square1=j)
         {
          cout<<str[j]; //printing square1 square in string
         }
        if (square2=j)
        {
          cout<<str[j+1]; //printing square2 square in string/ 
          break;
        }   
     }

int main()
{
          
          int T;
          cin>>T;
          
          int n;
          string str;
          for (int i=0;i<T;i++)
          {
              cin>>str;
              n = str.size();
              cout<<n<<" ";
              
              if (n%2!=0)
              odd(str); 
              if (n%2==0)
              even(str);
              
              cout<<endl;
          }
          
          getch();
          return 0;
}
تابع even یک آکولاد کمتر بسته شده!!!
یه آکولاد بالای اینت مین ببندید درست میشه.
کد تون تصحیح شد
کد:
#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;

void odd(string str) //if the string length is odd 
{
 int j,square,n=str.size();
     
     if (n%2!=0)        //if n was odd
     {
         square = (n/2)+1; //finding the square number(middle one) that should be printed
     }
     
     for (j=0;j<=n;j++) /*breaking the string to characters */
     {
         if (square=j)
         {
          cout<<str[j]; //printing odd
          break;
         }
     }
     
}

void even(string str) 
{    
      int j,square1,square2,n=str.size();
      
     if (n%2==0) //if n is even
     { 
         square1 = (n/2); //first square that should be printed
         square2 = (n/2)+1; //second square that should be printed
     }
          
     for (j=0;j<=n;j++)
     {
        if (square1=j)
         {
          cout<<str[j]; //printing square1 square in string
         }
        if (square2=j)
        {
          cout<<str[j+1]; //printing square2 square in string/ 
          break;
        }   
     }
     }

int main()
{
          
          int T;
          cin>>T;
          
          int n;
          string str;
          for (int i=0;i<T;i++)
          {
              cin>>str;
              n = str.size();
              cout<<n<<" ";
              
              if (n%2!=0)
              odd(str); 
              if (n%2==0)
              even(str);
              
              cout<<endl;
          }
          
          getch();
          return 0;
}
برنامتون باگ داره
برای تعداد کاراکتر یک جواب نمیده
و برای تعداد کاراکتر فرد وسطی رو نشون نمیده
یکی مونده به وسطی رو نشون میده!
میخواید درستش کنم؟!
تصحیح شده ی کل داستان:
کد:
#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;

void odd(string str) //if the string length is odd 
{
 int j,square,n=str.size();
     
     if (n%2!=0)        //if n was odd
     {
         square = (n/2)+1; //finding the square number(middle one) that should be printed
     }
     
     for (j=0;j<=n;j++) /*breaking the string to characters */
     {
         if (square=j)
         {
          cout<<str[j+1]; //printing odd
          break;
         }
     }
     
}

void even(string str) 
{    
      int j,square1,square2,n=str.size();
      
     if (n%2==0) //if n is even
     { 
         square1 = (n/2); //first square that should be printed
         square2 = (n/2)+1; //second square that should be printed
     }
          
     for (j=0;j<=n;j++)
     {
        if (square1=j)
         {
          cout<<str[j]; //printing square1 square in string
         }
        if (square2=j)
        {
          cout<<str[j+1]; //printing square2 square in string/ 
          break;
        }   
     }
     }

int main()
{
          
          int T;
          cin>>T;
          
          int n;
          string str;
          for (int i=0;i<T;i++)
          {
              cin>>str;
              n = str.size();
              cout<<n<<" ";
              
              if (n%2!=0)
              odd(str); 
              if (n%2==0)
              even(str);
              
              cout<<endl;
          }
          
          getch();
          return 0;
}
 
پاسخ : مقدمات برنامه نویسی با ++C

برادر کدنویس ، وقتی از شرط if استفاده می کنی ، a=x معنی نداره !! باید a==x رو استفاده کنی .
می دونم که خودتم اینو می دونی ولی اصلا دقت نکرده بودی روی این موضوع ، 3 جا a=x گذاشته بودی ، 3 جا a==x !!! تکلیف ما رو مشخص کن :-" ;D
 
پاسخ : مقدمات برنامه نویسی با ++C

به علاوه اینکه تو این تیکّه از برنامه :

کد:
    for (j=0;j<=n;j++)
     {
        if (square1=j)
         {
          cout<<str[j]; //printing square1 square in string
         }
        if (square2=j)
        {
          cout<<str[j+1]; //printing square2 square in string/ 
          break;
        }

cout<<str[j+1] نادرسته چون این j که الان برابر با square2 شده خود به خود یکی بیشتر از j قبلی ـه نیازی به +1 نداره. j+1 باید بشه j
بعد هم اینکه آرایه ها از 0 شروع میشن پس square1=(n/2)-1 و square2= n/2 . همینطور تو odd
این و == ها و دو پست قبل گفته شده هارو درست کنید ، درست میشه که در نهایت همون کد میشه :

کد:
#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;

void odd(string str) //if the string length is odd 
{
 int j,square,n=str.size();
     
     if (n%2!=0)        //if n was odd
     {
         square = (n/2); //finding the square number(middle one) that should be printed
     }
     
     for (j=0;j<=n;j++) /*breaking the string to characters */
     {
         if (square==j)
         {
          cout<<str[j]; //printing odd
          break;
         }
     }
     
}

void even(string str) 
{    
      int j,square1,square2,n=str.size();
      
     if (n%2==0) //if n is even
     { 
         square1 = (n/2)-1; //first square that should be printed
         square2 = (n/2); //second square that should be printed
     }
          
     for (j=0;j<=n;j++)
     {
        if (square1==j)
         {
          cout<<str[j]; //printing square1 square in string
         }
        if (square2==j)
        {
          cout<<str[j]; //printing square2 square in string/ 
          break;
        }   
     }
     }

int main()
{
          
          int T;
          cin>>T;
          
          int n;
          string str;
          for (int i=0;i<T;i++)
          {
              cin>>str;
              n = str.size();
              cout<<n<<" ";
              
              if (n%2!=0)
              odd(str); 
              if (n%2==0)
              even(str);
              
              cout<<endl;
          }
          
          getch();
          return 0;
}
 
پاسخ : مقدمات برنامه نویسی با ++C

کلا یه کم بد کد میزنید ! :)
ببخشید اینو میگم ولی به مسائل خیلی سخت نیگا میکنید !
الکی متغیر نگیرید برا راحتی کار ! ، هرچی با متغیر کمتر بزنید خیلی بهتره
اینم کد برنامه هستش !
کد:
// Ine the name of God

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <string>
#include <stack>
#include <deque>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <iomanip>
#include <utility>

using namespace std;

#define foreach(i,c) (__typeof(c.begin()) i = c.begin(); i != c.end(); ++i)
#define FOR(i,a,b) for (int i=(a); i<(int)(b); ++i)
#define error(x) cerr << #x << " : " << x << endl
#define Size(a) ((int)a.size())
#define all(a) a.begin(), a.end()
#define pb push_back
#define mp make_pair
#define X first
#define Y second

typedef long long ll;
typedef pair<int, int> pii;

int main () {
	int T;
	for (cin >> T; T--;) {
		string s;
		cin >> s;
		if (Size(s) % 2 == 0)
			cout << s[Size(s)/2 - 1] << s[Size(s)/2] << endl;
		else
			cout << s[Size(s)/2] << endl;
	}
	return 0;
}
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از Sajad Rahimi :
تابع even یک آکولاد کمتر بسته شده!!!
یه آکولاد بالای اینت مین ببندید درست میشه.
کد تون تصحیح شد
کد:
#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;

void odd(string str) //if the string length is odd 
{
 int j,square,n=str.size();
     
     if (n%2!=0)        //if n was odd
     {
         square = (n/2)+1; //finding the square number(middle one) that should be printed
     }
     
     for (j=0;j<=n;j++) /*breaking the string to characters */
     {
         if (square=j)
         {
          cout<<str[j]; //printing odd
          break;
         }
     }
     
}

void even(string str) 
{    
      int j,square1,square2,n=str.size();
      
     if (n%2==0) //if n is even
     { 
         square1 = (n/2); //first square that should be printed
         square2 = (n/2)+1; //second square that should be printed
     }
          
     for (j=0;j<=n;j++)
     {
        if (square1=j)
         {
          cout<<str[j]; //printing square1 square in string
         }
        if (square2=j)
        {
          cout<<str[j+1]; //printing square2 square in string/ 
          break;
        }   
     }
     }

int main()
{
          
          int T;
          cin>>T;
          
          int n;
          string str;
          for (int i=0;i<T;i++)
          {
              cin>>str;
              n = str.size();
              cout<<n<<" ";
              
              if (n%2!=0)
              odd(str); 
              if (n%2==0)
              even(str);
              
              cout<<endl;
          }
          
          getch();
          return 0;
}
برنامتون باگ داره
برای تعداد کاراکتر یک جواب نمیده
و برای تعداد کاراکتر فرد وسطی رو نشون نمیده
یکی مونده به وسطی رو نشون میده!
میخواید درستش کنم؟!
تصحیح شده ی کل داستان:
کد:
#include<iostream>
#include<string.h>
#include<conio.h>
using namespace std;

void odd(string str) //if the string length is odd 
{
 int j,square,n=str.size();
     
     if (n%2!=0)        //if n was odd
     {
         square = (n/2)+1; //finding the square number(middle one) that should be printed
     }
     
     for (j=0;j<=n;j++) /*breaking the string to characters */
     {
         if (square=j)
         {
          cout<<str[j+1]; //printing odd
          break;
         }
     }
     
}

void even(string str) 
{    
      int j,square1,square2,n=str.size();
      
     if (n%2==0) //if n is even
     { 
         square1 = (n/2); //first square that should be printed
         square2 = (n/2)+1; //second square that should be printed
     }
          
     for (j=0;j<=n;j++)
     {
        if (square1=j)
         {
          cout<<str[j]; //printing square1 square in string
         }
        if (square2=j)
        {
          cout<<str[j+1]; //printing square2 square in string/ 
          break;
        }   
     }
     }

int main()
{
          
          int T;
          cin>>T;
          
          int n;
          string str;
          for (int i=0;i<T;i++)
          {
              cin>>str;
              n = str.size();
              cout<<n<<" ";
              
              if (n%2!=0)
              odd(str); 
              if (n%2==0)
              even(str);
              
              cout<<endl;
          }
          
          getch();
          return 0;
}

آره. درست میگفتید. ولی چون فکر کنم کد نهاییتون به الگوریتم من شبیهه اشتباه کار میکنه. مثلا یه رشته 6 تایی بزنید ببینید تو خروجی چی میده
ولی باز هم راهنمایی هاتون ممنون
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از Daneshvar :
آره قبول دارم. کدتون کامل درسته. فقط یه کم کتابخانه زیاد نداره؟ ولی جالب بود. فقط باید چاپ تعداد کاراکتر بهش اضافه بشه. در هر حال ممنون
این فایلی که من دارم از قبل آماده هستش ، به دلیل اینکه توی کانتست های مختلف وقت نیست که ببینی چه کتابخونه ای لازمت میشه و اینا ، همه چیزایی که معلمولن لازمم میشه رو include کردم + چیزایی که زیاد استفاده میکنم رو define کردم :)
شما هم یکم قوی شدی از این کارا باید بکنی !
ولی این کار یک امر سلیقه ای هست !
 
پاسخ : مقدمات برنامه نویسی با ++C

به نقل از vector :
این فایلی که من دارم از قبل آماده هستش ، به دلیل اینکه توی کانتست های مختلف وقت نیست که ببینی چه کتابخونه ای لازمت میشه و اینا ، همه چیزایی که معلمولن لازمم میشه رو include کردم + چیزایی که زیاد استفاده میکنم رو define کردم :)
شما هم یکم قوی شدی از این کارا باید بکنی !
ولی این کار یک امر سلیقه ای هست !

میشه بگید از کدوم define ها و include ها در این برنامه استفاده شده است؟
 
Back
بالا