PDA

View Full Version : سوال: مشکل در یک برنامه



hossein2kk
جمعه 23 بهمن 1388, 00:22 صبح
سلام دوستان
من یک برنامه نوشتم که هدفش اینه :
نام و شماره تلفن تعدادی از مشتریان را از ورودی خوانده و در ارایه ای ذخیره کند . سپس نامی را خوانده و ببیند آیا در ورودی ها بوده یا خیر ؟
این کد من هست :

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

void input (int num , char **names , int *numbers){
char temp[40] ;
for (int i = 0 ; i < num ; i++){
cout << "# " << (i+1) << " Name :" ;
cin.get(temp,39);
cin.get();
names [i] = new char [strlen(temp)+1];
names [i] = temp;
cout << "Tel : ";
cin >> numbers[i] ;
cout << "- - - - - - - - - - ";
}
}
int search (int num ,char *name , char **names){
for (int i = 0 ; i < num ; i++){
if (!strcmp(name,names[i]))
return i ;
}
return -1 ;
}
int main () {
char **names ;
int *numbers , num;
cin >> num;
names = new char [num];
numbers = new int [num];
cout << "How many records do you have ?!"<< endl;
input (num ,names ,numbers);
clrscr();
cout << "Enter your name to search ..." << endl ;
char name [40];
cin.get(name,39);
if (search(num,name,names) == -1)
cout << "This record does not exist !";
else
cout << "We have record : Name = " << name << " Tel = " << numbers[search(num,name,names)];
getch();
return 0 ;
}
اما یک ارور میده که نمی دونم چطور رفعش کنم ؟؟
تو این خط :

names = new char [num];
میگه Could not conver char * to char ** .
پیشاپیش از دوستان سپاسگزارم .

Rain_Song
جمعه 23 بهمن 1388, 00:41 صبح
سلام
خوب معلومه
چون شما یه آرایه ی دوبعدی رو مثل یه آرایه ی یه بعدی new کردی ...
new کردن آرایه ی دو بعدی :

int m1 , n1;فرض کنیم که m1 , n1 رو از کاربر گرفتیم

int **matrix 1 = new int *[m1 * n1];حالا ادامه :

for (int i = 0 , i < m1, i++)
for (int j = 0 , j < n1, j++)
matrix 1[i][j]= // برای مثال یه مقدار میدیم ;

hossein2kk
جمعه 23 بهمن 1388, 08:36 صبح
دوست گرامی ممنون از راهنماییتون
به کمک شما توستم مشکل syntax ای برنامه رو حل کنم ولی الان یه مشکل منطقی برنامه داره :

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

void input (int num , char **names , int *numbers){
char temp[40] ;
for (int i = 0 ; i < num ; i++){
cout << "#" << (i+1) << " Name :" ;
cin.get(temp,39);
names [i] = new char [strlen(temp)+1];
names [i] = temp;
cout << "Tel : ";
cin >> numbers[i] ;
cin.get();
cout << "- - - - - - - - - - " <<endl;
}
}
int search (int num ,char *name , char**names){
for (int i = 0 ; i < num ; i++){
cout << name << " -- " << names [i] << endl ;
if (!strcmp(name,names[i]))
return i ;
}
return -1 ;
}
int main () {
char **names ;
int *numbers , num;
cout << "How many records do you have ?!"<< endl;
cin >> num;
cin.get();
names = new char *[num];
numbers = new int [num];
input (num ,names ,numbers);
clrscr();
cout << "Enter your name to search ..." << endl ;
char name [40];
cin.get(name,39);
int state = search(num,name,names);
if (state == -1)
cout << "This record does not exist !";
else
cout << "We have record : Name = " << name << " Tel = " << numbers[state];
delete names;
delete numbers;
getch();
return 0 ;
}
فکر کنم تو تابع Input هنگام وارد کردن عبارت ها دچار مشکل میشه برنامه ولی خودم متوجه نشدم چرا ؟
ممنون

lvlina_r
جمعه 23 بهمن 1388, 13:43 عصر
# include <iostream>
# include <conio.h>
# include <string.h>
using namespace std;
void input (int num , char **names , int *numbers){
char temp[40] ;
for (int i = 0 ; i < num ; i++){
cout << "#" << (i+1) << " Name :" ;
cin.get(temp,39);
names [i] = new char [strlen(temp)+1];
for (int j=0;j<strlen(temp);j++)
names[i][j]=temp[j];
cout << "Tel : ";
cin >> numbers[i] ;
cin.get();
cout << "- - - - - - - - - - " <<endl;

}
}
int search (int num ,char *name , char**names){
for (int i = 0 ; i < num ; i++){

if (strcmp(name,names[i]))
return i ;
}
return -1 ;
}
int main () {
char **names ;
int *numbers , num;
cout << "How many records do you have ?!"<< endl;
cin >> num;
cin.get();
names = new char *[num];
numbers = new int [num];
input (num ,names ,numbers);
cout << "Enter your name to search ..." << endl ;
char name [40];
cin.get(name,39);
int state = search(num,name,names);
if (state == -1)
cout << "This record does not exist !";
else
cout << "We have record : Name = " << name << " Tel = " << numbers[state];
delete names;
delete numbers;
getch();
return 0 ;
}

آلان کار میده.....