PDA

View Full Version : مبتدی: چاپ حروف؟



Aliweb
جمعه 30 مهر 1389, 22:21 عصر
سلام
چرا این کد وقتی اجرا میکنی و اسم مثلا Ali بهش میدی فقط حرف اول رو چاپ میکنه؟

#include<iostream.h>
#include<conio.h>
int main()
{
char ch;
cin>>ch;
cout<<ch;
getch();
return 0;
}

Gold_cpp
جمعه 30 مهر 1389, 22:47 عصر
سلام
اگه به جای

char ch;

char ch[3];
رو بذاری مشکلت حل میشه . :چشمک:

Aliweb
جمعه 30 مهر 1389, 22:53 عصر
نمیشه کاری کرد که من هر چیزی نوشتم همون چاپ بشه بدون محدودیت

Gold_cpp
جمعه 30 مهر 1389, 23:08 عصر
خوب به جای

char ch[3];

char ch[30];
بذار .

r00tkit
جمعه 30 مهر 1389, 23:14 عصر
#include<iostream>
#include<conio.h>
int main()
{
char*ch=new char;
std::cin>>ch;
std::cout<<ch;
getch();
return 0;
}

Aliweb
جمعه 30 مهر 1389, 23:17 عصر
ببخشید دوست عزیز میشه یه مقدار مرتب بذاری من که چیزی متوجه نشدم

r00tkit
جمعه 30 مهر 1389, 23:31 عصر
این سوالت باعث شد یه نکته که نمی دونم قبلا" دیده بودم یا نه رو دوباره ببینم

اینم نکته:




int sum(int a, int b);
int subtract(int a, int b);
int mul(int a, int b);
int div(int a, int b);

int (*p[4]) (int x, int y);

int main(void)
{
int result;
int i, j, op;

p[0] = sum; /* address of sum() */
p[1] = subtract; /* address of subtract() */
p[2] = mul; /* address of mul() */
p[3] = div; /* address of div() */

و




int f()

{

return 2;

}

int main()
{

int (**p) () = new (int (*[7]) ());

p[0]=f;
p[0]();

}


خوش باشی

Gold_cpp
جمعه 30 مهر 1389, 23:59 عصر
دوست عزیز geek1982 سلام
شما در مورد کد اولتون یه متغییر پویا تعریف کردید نه یک رشته .
برای اینکه یک string بگیریم باید یک آرایه پویا تعریف کنیم نه یک متغییر !
درسته ؟:بوس:

Salar Ashgi
شنبه 01 آبان 1389, 00:34 صبح
چرا این کد وقتی اجرا میکنی و اسم مثلا Ali بهش میدی فقط حرف اول رو چاپ میکنه؟

کاراکتر ، عبارتی است که طولش همیشه یک هست ، ولی رشته دنباله ای از کاراکترهاست !
برای گرفتن و چاپ رشته :


#include <iostream>
#include <conio>
#include <string>
using namespace std;
int main(){
string str;
cout<<"Enter a name :\n";
cin>>str;
cout<<str<<endl;
getch();
}

r00tkit
شنبه 01 آبان 1389, 00:37 صبح
شما در مورد کد اولتون یه متغییر پویا تعریف کردید نه یک رشته . it's c-style string



برای اینکه یک string بگیریم باید یک آرایه پویا تعریف کنیم نه یک متغییر
دقیقا" من الان یه اریه پویا درست کردم


این ارایه ها و dynamic memory ,pointer ها خیلی نکته دارن !!درسته

مثلا" فرق کد این دو با هم چیه




char* t=new char;
با //
char*y="geek";
cin>>t //geek
و




int *pArray;
int MyArray[6];
pArray = &MyArray[0];
//با
int *pArray=new int;


و
فرق new با malloc?

Gold_cpp
شنبه 01 آبان 1389, 01:19 صبح
با سلامی مجدد به دوست خوبم geek1982

این ارایه ها و dynamic memory ,pointer ها خیلی نکته دارن !!درسته
بله درسته . و چون نکته زیاد دارن گفتم شاید این pointer ها رو خوب متوجه نشدم . برای همین از شما سوال کردم .
دوست عزیز نمی دونم چرا مقایسه دو کد رو آوردی !:متفکر:

درباره new و malloc ::
new :: برای تخصیص حافظه پویا در ++C استفاده می شود .
malloc هم همین کار رو توی C انجام میده .
توی ++C ،
delete داریم و در C ،
free

یه سوال
فکر میکنید این حرف درسته !؟


int *x = new int ;
//or
int *x;
x = new int ;

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


//const int n = 30;
int *x;
x = new int [n];

با این حساب تعریف یک متغییر با آرایه ای از متغیر ها متفاوت است ؟؟

r00tkit
شنبه 01 آبان 1389, 01:33 صبح
نگاه کن



int* t=new int;
t[1]=2;
std::cout<<t[1];

int* y=new int[2];
std::cout<<y[1];
در مورد new و mallocهم بگم که malloc شی گرا نیست

تصمیم گرفتم نکات جالب رو در مورد این دو زبان که note کردم تو یه تاپیک بنویسم