پرسش و پاسخ در زبانهای برنامه نویسی C

samin1269

عضو جدید
کمک

کمک

با سلام
برنامه ای که عبارت محاسباتی رو به صورت رشته خونده و آن را از نظر جفت بودن تعداد پرانتزها بررسی کند
و اگرتعداد پرانتزهای باز و بسته با هم یکسان نیستند پیغام خطا بدهد
لطفا راهنمایی کنید
 

Erfan_K

عضو جدید
کاربر ممتاز
اینم کمک!

اینم کمک!

سلام دوست عزیز....
با #C کاری نداره....یه سلول string میگیری وبه کاربر میگی جمله رو وارد کن. بعد با تابع ConvertToChar جمله رو میرزی توی یک آرایه ی کاراکتری....این کار رو درون یک حلقه انجام میدی... بعدش که دیگه کاری نداره..... آرایه رو میذاری توی یه حلقه و کاراکتر به کاراکتر چک میکنی تا شرایط برقرار باشه... مثلا میتئنی چک کنی اولین کاراکتر پرانتز باشه و اینکه تعداد پرانتزها رو با یک شمارنده بشماری و زوج و فرد بودنش رو مشخص کنی....وپیام مناسب رو چاپ کنی....
 

mahya1364

عضو جدید
برنامه رو نوشتم)c++) یه مشکلی داره که پیداش نمیکنم.کسی میتونه؟

برنامه رو نوشتم)c++) یه مشکلی داره که پیداش نمیکنم.کسی میتونه؟

سلام.سوال این بوده که برنامه با گرفتن روز اول سال تقویم آن سال را نمایش دهد.
برنامه هم اینجاس اما یه مشکلی داره که وقتی اجرا شه می فهمین.مشکلش اینه که روز اول هر ماه را زیر روز هفته خودش نمیده.
هرکی می تونه لطفا کمک کنه ببینم اشکال کار کجاست:razz:؟؟؟ممنون...;)

اینم از برنامه:


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string.h>
using namespace std;
void main ()
{
int w;
int n,i;
int day,m1,m2,year,dd;
//printf("Insert n:");
cout<<"\tShanbe=0\t1shanbe=1\t2shanbe=2\t3shanbe=3\t4shanbe=4\t5shanbe=5\tjomee=6\n";
do{
cout<<"Insert First Day (#<7) :";
cin>>n;
}while (n>7);
do{
cout<<"Insert year (1300< (####) <1900) :";
cin>>year;
}while (year<1300);
i=0; day=1; m1=1; m2=1;
char str[12][15]={"farvardin\n","ordibehesht\n","khordad\n","tir\n","mordad\n","shahrivar\n","mehr\n","aban\n","azar\n","dey\n","bahman\n","esfand\n"};
cout<<"\tShanbe\t1shanbe\t2shanbe\t3shanbe\t4shanbe\t5shanbe\tjomee\n";
cout<<str[0];
while (m1 <=6)
{
while(day<32)
{
for (i=n;i<7 && day<32;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
cout<<"\n \n";
cout<<str[m1];
i=0;
day=1;
n=w+1;
m1++;
}
while (m2 <6)
{
while(day<31)
{
for (i=n;i<7 && day<31;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
cout<<"\n \n";
cout<<str[m1+m2-1];
i=0;
day=1;
n=w+1;
m2++;
}
if(year%4==3)
dd=31;
else dd=30;
while(day<dd)
{
for (i=n;i<7 && day<dd;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
cin>>n;
}
 

beyramali

عضو جدید
لطفا مرا كمك كند فوووووراً

لطفا مرا كمك كند فوووووراً

من اين برنامه را به زبان ++C نوشته ام كه عدد دسيمال را به باينري تبديل مي كند اما بعد از تبديل اولين عدد اگر كاربر تمايل به ادامه كار داشته باشد بدون خروج از برنامه حاصل جواب عدد قبلي را در جلوي جواب عدد بعدي قرارمي دهد و نتوانستم اين عمل را درست كنم . لطفا كمكم كنيد چون 2خرداد امتحان دارم.
#include<iostream.h>
#include<conio.h>
int main()
{
long int n,z,A[16],i=0;
char Q;

do
{
again:
cout<<"\n\n\tPlease Enter Number :";
cin>>n;
z=n;
if (n<=0)
{
cout<<"\n\n *** thise Number is Negative! Please try again ***";
goto again;
}
while(n>0)
{
A=n%2;
n/=2;
i++;
}
clrscr();

cout<<"\n\tdesimal"<<"\t bayneri";
cout<<"\n\t-------"<<"\t ---------";
cout<<"\n"<<"\t "<<z<<"\t ";

for(int j=i-1;j>=0;j--)
cout<<A[j];
cout<<endl;
cout<<"\n\n\n\n\t\t *** Please Enter Y to continue Or N to Cancel ***";
cout<<"\n\t Are You to Continue ?(Y or N)";
cin>>Q;
}
while(Q!='n');
cout<endl;
cout<endl;
cout<endl;
cout<<"\n\n\n\n\n \t\t *** EXIT THIS PROGRAM! ***";
cout<<"\n \t\t *** thank you choose this program to run ***";
return 0;
}
 

javadyousefi

عضو جدید
daghighan manzooreto nafahmidam vali age neveshte haye ghablet pak nemishe bayad bad az DO , clrscr() bezari

age javabe ghablit ham hamrahe in chap mishe bayad araye A ke tarif kardi ebtedaye halghe Do while tamame anasoresh ro barabare 0 bedi ta meghdarhaye ghabli azash pak she.

for(int i=0;i<n;i++)
A=0;
 

beyramali

عضو جدید
با تشكر از شما دوست عزيز كه به اين سرعت پاسخ را مرحمت فرموديد ولي مشكل با اين كار حل نشد .

وقتي برنامه را اجرا ميكنم اولين عدد را كه وارد مي كنم تبديل را به صورت صحيح انجام مي دهد و بعد سوال مي كند كه آيا مي خواهيد ادامه دهيد يا خير و وقتي Y را براي ادامه كار تايپ مي كنم عدد جديد را مي گيرد به جاي اينكه فقط پاسخ جديد را بنويسد آن را همراه با پاسخ قبلي در خروجي نمايش مي دهد ولي اگر از برنامه خارج شوم و دوباره اجرا نمايم اولين عدد ورودي را بطور صحيح برميگرداند و بقيه را نه منظورم اين است كه چگونه مي توانم بعد از چاپ كردن محتويات آرايه آنرا خالي كنم انگار كه هيچ چيز در آن ذخيره نشده است حتي مقدار صفر.......
 

!...

عضو جدید
کاربر ممتاز
سلام دوست عزیز!
یه تغییرات کوچیک دادم, درس شد!:w10:
کپی پیست کن و حالشو ببر!:whistle:



کد:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <string.h>
using namespace std;
void main ()
{
int w;
int n,i;
int day,m1,m2,year,dd;
//printf("Insert n:");
cout<<"\tShanbe=0\t1shanbe=1\t2shanbe=2\t3shanbe=3 \t4shanbe=4\t5shanbe=5\tjomee=6\n";
do{
cout<<"Insert First Day (#<7) :";
cin>>n;
}while (n>7);
do{
cout<<"Insert year (1300< (####) <1900) :";
cin>>year;
}while (year<1300);
i=0; day=1; m1=1; m2=1;
char str[12][15]={"farvardin\n","ordibehesht\n","khordad\n","tir\n ","mordad\n","shahrivar\n","mehr\n","aban\n","azar \n","dey\n","bahman\n","esfand\n"};
cout<<"\tShanbe\t1shanbe\t2shanbe\t3shanbe\t4shanb e\t5shanbe\tjomee\n";
cout<<str[0];
while (m1 <=6)
{
while(day<32)
{
for (int j=0;j<n;j++)
cout<<"\t";
for (i=n;i<7 && day<32;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
cout<<"\n \n";
cout<<str[m1];
i=0;
day=1;
n=w+1;
m1++;
}
while (m2 <6)
{
while(day<31)
{
for (int j=0;j<n;j++)
cout<<"\t";
for (i=n;i<7 && day<31;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
cout<<"\n \n";
cout<<str[m1+m2-1];
i=0;
day=1;
n=w+1;
m2++;
}
if(year%4==3)
dd=31;
else dd=30;
while(day<dd)
{
for (int j=0;j<n;j++)
cout<<"\t";
for (i=n;i<7 && day<dd;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
//cin>>n;
getch();
}
 

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
اين هم يه تغيير كوچيك براي اجرا در سي تحت داس
کد:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream.h>
#include <string.h>
//using namespace std;
void main ()
{
int w;
int n,i;
int day,m1,m2,year,dd;
//printf("Insert n:");
cout<<"\tShanbe=0\t1shanbe=1\t2shanbe=2\t3shanbe=3 \t4shanbe=4\t5shanbe=5\tjomee=6\n";
do{
cout<<"Insert First Day (#<7) :";
cin>>n;
}while (n>7);
do{
cout<<"Insert year (1300< (####) <1900) :";
cin>>year;
}while (year<1300);
i=0; day=1; m1=1; m2=1;
char str[12][15]={"farvardin\n","ordibehesht\n","khordad\n","tir\n ","mordad\n","shahrivar\n","mehr\n","aban\n","azar \n","dey\n","bahman\n","esfand\n"};
cout<<"\tShanbe\t1shanbe\t2shanbe\t3shanbe\t4shanb e\t5shanbe\tjomee\n";
cout<<str[0];
while (m1 <=6)
{
while(day<32)
{
for (int j=0;j<n;j++)
cout<<"\t";
for (i=n;i<7 && day<32;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
cout<<"\n \n";
cout<<str[m1];
i=0;
day=1;
n=w+1;
m1++;
}
while (m2 <6)
{
while(day<31)
{
for (int j=0;j<n;j++)
cout<<"\t";
for (i=n;i<7 && day<31;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
cout<<"\n \n";
cout<<str[m1+m2-1];
i=0;
day=1;
n=w+1;
m2++;
}
if(year%4==3)
dd=31;
else dd=30;
while(day<dd)
{
for (int j=0;j<n;j++)
cout<<"\t";
for (i=n;i<7 && day<dd;i++)
{
cout<<"\t"<<day;
day++;
w=i;
}
cout<<"\n";
n=0;
}
//cin>>n;
getch();
}
 

!...

عضو جدید
کاربر ممتاز
hrp تفاهم داریما!
بیا با هم ازدواج کنیم!
 

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
باشه اميد جان
حميد و اميد!عجب تفاهمي!
حالا نمي شه به جاي ازدواج همكار بشيم؟
 

beyramali

عضو جدید
daghighan manzooreto nafahmidam vali age neveshte haye ghablet pak nemishe bayad bad az DO , clrscr() bezari

age javabe ghablit ham hamrahe in chap mishe bayad araye A ke tarif kardi ebtedaye halghe Do while tamame anasoresh ro barabare 0 bedi ta meghdarhaye ghabli azash pak she.

for(int i=0;i<n;i++)
A=0;


:heart:باتشكر از شما دوست عزيز
توانستم مشكل را حل كنم
ولي اگر لطف فرمائيد در باره اين دستور توضيح بدهيد ممنون مي شوم
while(1)
{
چند خط دستور
}
 

momeni_m

عضو جدید
سلام

سلام

سلام دوست عزیز
این دستور که شما نوشتی یک حلقه بی پایان درست میکنه.
 

beyramali

عضو جدید
كمك تبديل دسيمال به هگزا

كمك تبديل دسيمال به هگزا

سلام دوست عزیز
این دستور که شما نوشتی یک حلقه بی پایان درست میکنه.


:)باتشكر دوست عزيز

اگر بخواهم در داخل يك ارايه هم عدد و هم كركتر ذخيره نمايم چكاري را بايد در C++ انجام دهم
براي نوشتن سورس كد تبديل عدد دسيمال به هگزا
با تشكر
 

javadyousefi

عضو جدید
while(1) halhje bi nahayate

vase zakhire char va int dakhele yek araye bayad adadi ke zakhire mishe be char tabdil beshe va vaghty az araye avordi biroon age meghdare adadi ro khasty bayad be adad tabdilesh koni

tabdile char be adad : atoi(char)

tabdile adad be char : itoa(int)
 

beyramali

عضو جدید
while(1) halhje bi nahayate

vase zakhire char va int dakhele yek araye bayad adadi ke zakhire mishe be char tabdil beshe va vaghty az araye avordi biroon age meghdare adadi ro khasty bayad be adad tabdilesh koni

tabdile char be adad : atoi(char)

tabdile adad be char : itoa(int)

سلام و عرض تشكر از اينكه با حوصله جواب مي دهيد دوست عزيز يعني من مي توانم چنين بنويسم switch(n%16) { case 10: A='A'; break; case 11: A='B'; break; case 12: A='C'; break; case 13: A='D'; break; case 14: A='E'; break; case 15: A='F'; break; default: A=itoa(n%16); }
 

javadyousefi

عضو جدید
سلام و عرض تشكر از اينكه با حوصله جواب مي دهيد دوست عزيز يعني من مي توانم چنين بنويسم switch(n%16) { case 10: A='A'; break; case 11: A='B'; break; case 12: A='C'; break; case 13: A='D'; break; case 14: A='E'; break; case 15: A='F'; break; default: A=itoa(n%16); }



fek konam mikhay halate defaultet adad ro berizi too array ke bayad haminjoori benvisi

daghighan mikhay barnamat chikar kone ?
 

monrose

عضو جدید
کاربر ممتاز
emergency

emergency

برنامه درخت جستجوی دودویی (binary search tree). با استفاده از کلاس ها.
 
آخرین ویرایش:

beyramali

عضو جدید
fek konam mikhay halate defaultet adad ro berizi too array ke bayad haminjoori benvisi

daghighan mikhay barnamat chikar kone ?


دوست عزيز بايستي برنامه اي براي تبديل دسيمال به هگزا و برعكس بنويسم چون در مبناي هگزا از حروف استفاده مي شود بنابراين اگر آرايه از نوع int تعريف شود كاراكترها را نمي نويسد و اگر از نوع Char باشد اعداد را يا نمي نويسد يا اينكه بهم مي ريزد ميخواستم در بخش defaule دستور سوئيچ عدد به كاراكتر تبديل شود و داخل آرايه از نوع كاراكتر ذخيره گردد.

با تشكر
 

monrose

عضو جدید
کاربر ممتاز
سلام.سال بلايي هاي عزيز شما كه اين برنامه هاي سخت سخت رو نوشتين يه برنامه ي binary search tree براي من بنويسين لطفا.ممنون.
 

Sharif_

مدیر بازنشسته
برنامه درخت جستجوی دودویی (binary search tree). با استفاده از کلاس ها.
کد:
Binary Search Tree

#include<iostream.h>
#include<conio.h>
#include<alloc.h>

struct tree
 {
  int data;
  tree *left;
  tree *right;
 }*sptr,*q;
  void rightcheck();
  void leftcheck();
  void search();

  int insdata;
  tree *node;
  void main()
   {
    clrscr();
    node=new tree;
    cout<<"   PLEASE  PUT  THE root->>";
    cin>>node->data;
    sptr=node;
    q=sptr;
    node->left=NULL;
    node->right=NULL;
    cout<<"   GIVE THE child->>";
    cin>>insdata;
    search();
    while(insdata!=0)
    {
     if(insdata>sptr->data)
        rightcheck();
     else
        leftcheck();
        cout<<"   GIVE  THE  child->>";
        cin>>insdata;
        search();
        sptr=node;
       }
      getch();
      }
     void rightcheck()
       {
     if(sptr->right==NULL)
       {
        cout<<"    "<<insdata<<" IS THE  RIGHT  child of "<<q->data<<endl;
        sptr->right=new tree;
        sptr=sptr->right;
        sptr->data=insdata;
        sptr->left=NULL;
        sptr->right=NULL;
        q=node;
       }
     else
        {
         if(insdata>sptr->data)
          {
           sptr=sptr->right;
           q=sptr;
           if(insdata>sptr->data)
        rightcheck();
        else
        leftcheck();
         }
         else
          {
        sptr=sptr->left;
        q=sptr;
        leftcheck();
          }
         }
    }
         void leftcheck()
    {
         if(sptr->left==NULL)
          {
           cout<<"   "<<insdata<<" IS THE LEFT child of "<<q->data<<endl;
           sptr->left=new tree;
           sptr=sptr->left;
           sptr->data=insdata;
           sptr->right=NULL;
           sptr->left=NULL;
           q=node;
          }
     else{
         if(insdata<sptr->data)
          {
        sptr=sptr->left;
        q=sptr;
        if(insdata>sptr->data)
        rightcheck();
        else
        leftcheck();
          }
         else
          {
        sptr=sptr->right;
        q=sptr;
        rightcheck();}
          }
    }

       void search()
    {
       sptr=node;
       while(sptr!=NULL)
    {
      if(insdata==sptr->data)
        {
        cout<<"This is not insertable.";
        cout<<"\nInsert child ";
        cin>>insdata;
        search();
        break;
        }
      else
      {
        if(insdata>sptr->data)
        sptr=sptr->right;
        else
        sptr=sptr->left;
     }
       }
     sptr=node;

       }
[/LEFT]
 

mahya1364

عضو جدید
تشکر

تشکر

سلام بجه ها.کارتون عالی بود.دسستتون درد نکنه.خیلی استفاده کردم.
بازم ممنون.;)
 

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
اميد جان دل دوستان رو نشكن
اين هم كد
از اينترنت براتون كپي كردم:
کد:
//TO WRITE A PROGRAM TO SEARCH FOR A GIVEN ELEMENT FROM AN ARRAY USING BINARY
//SEARCH TECHNIQUE

#include<iostream.h>
#include<conio.h>


void binsearch(int ar[],int size,int ele)
{       int lb=0,ub=size-1,mid;             //lb=>lower bound,ub=>upper bound

     for(;lb<ub;)
       {
           mid=(lb+ub)/2;

           if(ar[mid]==ele)
             {
                cout<<"\n SEARCH SUCCESSFUL";
                break;
             }

           else
                 if(ar[mid]<ele)
                 ub=mid-1;

           else
               if(ar[mid]>ele)
                  lb=mid+1;
      }

       if(ub<lb)

         cout<<"\n SEARCH UNSUCCESSFUL";

}

void sort(int ar[],int size)               //sorts the array in ascending array using bubble sort
{
     int temp;

     for(int i=0;i<size;i++)
         for(int j=0;j<size-i-1;j++)
          if(ar[j]>ar[j+1])
               {
                temp=ar[j];
                ar[j]=ar[j+1];
                ar[j+1]=temp;

               }

}

void display(int ar[],int size)
{
     for(int i=0;i<size;i++)
         cout<<'\n'<<ar[i];
}

void input(int ar[],int size)
{
     for(int i=0;i<size;i++)
         cin>>ar[i];
}

void main()
{
     clrscr();

     int size;
     cout<<"\n ENTER THE NUMBER OF ELEMENTS REQUIRED IN THE ARRAY :";
     cin>>size;

     int *ar=new int(size);

     cout<<"\n ENTER THE ELEMENTS OF THE ARRAY :\n";

     input(ar,size);         //takes the input from the array

     sort(ar,size);         //sorts the array in the ascending order

     int ele;
     cout<<"\n ENTER THE ELEMENT TO BE FOUND :\n";
     cin>>ele;

     getch();

}

[FONT=Courier New][SIZE=2]#include <iostream.h>

int BinarySearch(int [], int, int);

int [B]main[/B]()
{[/SIZE][/FONT]   [FONT=Courier New][SIZE=2]
const int NUMEL = 10;
int nums[NUMEL] = {5,10,22,32,45,67,73,98,99,101};
int item, location;

cout << "Enter the item you are searching for: ";
cin >> item;
[B]location = BinarySearch(nums, NUMEL, item);[/B]
if (location > -1)
cout << "The item was found at index location "
<< location << endl;
else
cout << "The item was not found in the list\n";

return 0;
}

// this function returns the location of key in the list
// a -1 is returned if the value is not found
[/SIZE][/FONT]   [FONT=Courier New][SIZE=2]int [B]BinarySearch[/B](int list[], int size, int key)
[/SIZE][/FONT]   [FONT=Courier New][SIZE=2]{
int left, right, midpt;

left = 0;
right = size - 1;

while (left <= right)
{
midpt = (int) ((left + right) / 2);
if (key == list[midpt])
{
[B]return[/B] midpt;
}[/SIZE][/FONT]            [FONT=Courier New][SIZE=2]
  else if (key > list[midpt])
  	left = midpt + 1;
  else
  	right = midpt - 1;
  }
  
 [B]return [/B]-1;
  }[/SIZE][/FONT]
http://www.fredosaurus.com/notes-cpp/algorithms/searching/binarysearch.html
http://en.literateprograms.org/Binary_search_tree_(C_Plus_Plus)

http://en.wikipedia.org/wiki/Binary_search
 
  • Like
واکنش ها: !...

javadyousefi

عضو جدید
دوست عزيز بايستي برنامه اي براي تبديل دسيمال به هگزا و برعكس بنويسم چون در مبناي هگزا از حروف استفاده مي شود بنابراين اگر آرايه از نوع int تعريف شود كاراكترها را نمي نويسد و اگر از نوع Char باشد اعداد را يا نمي نويسد يا اينكه بهم مي ريزد ميخواستم در بخش defaule دستور سوئيچ عدد به كاراكتر تبديل شود و داخل آرايه از نوع كاراكتر ذخيره گردد.

با تشكر

khob bayad hamoon karo ke goftam anjam bedi moafagh bashi
 

SHRP

همکار مدیر تالار مهندسی کامپیوتر متخصص برنامه نوی
کاربر ممتاز
دوستان گرامي
براي نوشتن كدها از تگ كد استفاده كنيد
اگر تگ كد را پيدا نمي كنيد بصورت دستي اين تگ را به انتهاي متن خود : [/code]

و تگ بعدي را به ابتداي متن برنامه اضافه كنيد :
کد:
 

monrose

عضو جدید
کاربر ممتاز
خيلي ممنون از لطفتون.ميشه همين برنامه رو با استفاده از link list ها برام بنويسيد؟؟؟
 

zareasadi

عضو جدید
مشكل ديدن برنامه در محيط سي نسخه 3.0

مشكل ديدن برنامه در محيط سي نسخه 3.0

سلام يه سوال داشتم
من برنامه خودم رو در توربو سي مي نويسم ولي وقتي مي خواهم نتيجه را ببينم
صفحه سريع مي رود
دستور getch (ch
نوشتم ولي ايراد prototype
مي گيرد
 
بالا