سئوالات بی جواب سی

وضعیت
موضوع بسته شده است.

oranoos_mta

New Member
برنامه نویس حرفه ای با ++c

میتونید مشکله این برنامه رو به من بگید
کد:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <conio.h>
#include <fstream>

using namespace std;

struct Phone
{
	char name[15];
	char family[15];
	char tel[12];
	
	Phone *next;
};

Phone* Start_ptr = NULL;
Phone* current = NULL;

void Select ( int ); // which choice user selected;
void Add_new();
void Print_all();
void Menu1();
void Menu2();
void Edit_current();
void Uninstall();
void Delete_current ();
void Delete_all();
void Tel_or_name( int );
void Read_from_file();
void Write_to_file();
void Save_as_csv();
void Sort_name( int );
void Add_tail_from_file( Phone* );

Phone* Search( char* , int);


enum MENU{ ADD=1, SEARCH_NAME, SEARCH_NO, SORT_NAME, SORT_FAMIL, SHOW_ALL, SAVE, EXPORT_CSV, EXIT, UNINSTALL };

int main()
{
	Read_from_file();
	
	int choice;
	
	do
	{
		Menu1();	
		cin >> choice;
		system("cls");
		Select ( choice );
		
	}while ( choice != EXIT );
	
	Write_to_file();
	
	cout <<"Thank you\nSend your comment to [email protected]" << endl;
	Delete_all();
	
	return 0;
}

/*===================Select=======================*/
void Select( int choose )
{	
	switch ( choose )
	{
	case ADD :
		Add_new();      break;
		
	case SEARCH_NAME :
		Tel_or_name(1); break;
		
	case SEARCH_NO :
		Tel_or_name(2); break;
		
	case SORT_NAME :
		Sort_name(1);   break;
		
	case SORT_FAMIL :
		Sort_name(2);   break;
		
	case SHOW_ALL :
		Print_all();    break;

	case SAVE :
		Write_to_file();
		cout <<"We will save your data automatically when your work finished" << endl;
		system("pause");
		break;
		
	case EXPORT_CSV :
		Save_as_csv();	break;

	case EXIT :
		return;

	case UNINSTALL :
		Uninstall();    break;

	default :
		cout <<"Select again :" << endl;
	}
	return;
}
/*=================Add_new=====================*/
void Add_new()
{
	Phone* temp = new Phone;
	Phone* temp2 = Start_ptr;
	
	system("cls");
	
	cout << "Enter the name : ";
	cin >> temp->name;
	cout << "Family : ";
	cin >> temp->family;
	cout << "Phone number : ";
	cin >> temp->tel;
	
	temp->next = NULL;
	
	if ( Start_ptr == NULL )
	{
		Start_ptr = temp;		
	}
	
	else
	{
		while( temp2->next != NULL )
		{
			temp2 = temp2->next;
		}
		temp2->next = temp;
	}
	
	return;
}
/*==============Print_all=======================*/
void Print_all()
{
	Phone* temp = Start_ptr;
	char show[35];
	
	if ( Start_ptr == NULL )
	{
		cout <<"The list is empty!" << endl;
		system("pause");
		return;
	}
	else
	{
		cout<<"\nName                                Phone       "
			<<"\n----------------------------------- ------------" << endl;
		do
		{
			strcpy(show, "");
			strcat(show, temp->family);
			strcat(show, ", ");
			strcat(show, temp->name);
			show[0] = toupper(show[0]);
			cout << setiosflags( ios::left )
				<< setw(36) << show << setw(12) <<temp->tel <<endl;
			
			temp = temp->next;
		}while(temp != NULL);
	}
	cout << endl;
	system("pause"); 
	return;
}

/*=================Search=======================*/
Phone* Search( char* temp_search , int choice )
{
	/* If list is empty */
	if ( Start_ptr == NULL )
	{
		cout <<"List is empty!" << endl;
		return NULL;
	}

	/* Search by name */
	if ( choice == 1 )
	{
		while( current != NULL && strcmp( current->name, temp_search ) != 0 )
		{
			current = current->next;
		}
	}

	/* Search by tel */
	if ( choice == 2 )
	{
		while( current != NULL && strcmp( current->tel, temp_search ) != 0 )
		{
			current = current->next;
		}
		
	}

	/* If record found */
	if ( current != NULL )
	{
		cout << "Record found" << endl
			<< current->name << " " << current->family << " : " << current->tel << endl;
		
		return current;
	}

	/* If record !found */
	else
	{
		cout <<"Record NOT found" << endl;
		current = Start_ptr; //move back the current pointer to fisrt node
		return NULL;
	}
}

/*====================Delete_current====================*/
void Delete_current()
{
	Phone* temp = NULL;
	Phone* prev = NULL;

	/* If it`s the fisrt node */
	if ( current == Start_ptr ) 
	{
		temp = Start_ptr;
		Start_ptr = Start_ptr->next; //If we have only 1 node, start_ptr will point to NULL
		delete temp;
		temp = NULL;
	}

	/* If it`s in the middle of list or the last node */
	else	
	{
		prev = Start_ptr;
		while( prev->next != current )
		{
			prev = prev->next;
		}
		prev->next = current->next;// If it`s the last node prev will point to NULL
		delete current;
		current = Start_ptr;
	}			
}

/*=================Delete_all=================*/
void Delete_all()
{
	if ( Start_ptr == NULL )
	{
		return; // we have no memory allocated
	}

	Phone* temp = Start_ptr;
	while( Start_ptr != NULL )
	{
		temp = Start_ptr;
		Start_ptr = Start_ptr->next;
		delete temp;
	}
}

/*=================Tel_or_name================*/
void Tel_or_name(int choose)
{
	Phone* temp_del = NULL;
	char temp_search[15];
	int choice;
	
	current = Start_ptr;
		
	cout <<"Enter the "<<(choose == 1 ? "name" : "tel") <<" to search : ";
	cin >> temp_search;
		
	temp_del = Search( temp_search, choose );
		
	while ( temp_del != NULL )
	{
		Menu2();
		cin >> choice;
			
		switch( choice )
		{
		case 1: current = current->next; temp_del = Search( temp_search, choose ); break;
		case 2: Delete_current(); break;
		case 3: Edit_current();   break;
		case 4: return;
		}
	}
	system("pause");
	
}
/*==============Write_to_file=============================*/
void Write_to_file()
{
	Phone* temp = Start_ptr;
	ofstream outFile("Data.dat" , ios::out );
	
	if( !outFile )
	{
		cerr << "Some error ocured during writing to file." << endl;
		system("pause");
		return;
	}
	
	while( temp != NULL )
	{
		outFile << temp->name << " " << temp->family << " " << temp->tel;
		if( temp->next != NULL )
		{
			outFile << endl;
		}
		temp = temp->next;
		
	}

	outFile.close();

	cout <<"Data saved successfully." << endl;
}
/*===============Read_from_file=============================*/
void Read_from_file()
{
	ifstream inputFile("Data.dat" , ios::in );
	
	if ( !inputFile )
	{
		cout << "Data couldn`t be loaded." << endl;
		system("pause");
		return;
	}

	do
	{
		Phone* temp = new Phone;
		
		inputFile >> temp->name;
		inputFile >> temp->family;
		inputFile >> temp->tel;
		temp->next = NULL;
		
		Add_tail_from_file( temp );

		//Where should I place delete temp?????	
	}while( !inputFile.eof() );

	cout <<"Data loaded successfully" << endl;
}
/*================Save_as_csv===========================*/
void Save_as_csv()
{
	ofstream outputFile;
	cout << "Enter the path you want to save your file.\nExample : c:\\\\program\\\\yourfile.csv" << endl;
	char path[100]="";
	cin>>path;
	
	outputFile.open( path, ios::out );
	
	if( !outputFile )
	{
		cerr << "Some error ocured during writing to file." << endl;
		exit(1);
	}
	
	outputFile << "Name" << ';' << "Family" << ';' <<"Tel" <<endl;
	
	Phone* temp = Start_ptr;
	
	while( temp != NULL )
	{
		outputFile << temp->name << ';' << temp->family << ';' << temp->tel << endl;
		temp = temp->next;
	}
	outputFile.close();
	cout << "Data saved successfully at " << path << endl;
	system("pause");
	
}
/*==============Add_tail_from_file=================*/
void Add_tail_from_file( Phone* temp )
{
	
	if ( Start_ptr == NULL )
	{
		Start_ptr = temp;	
	}
	else
	{
		Phone* temp2 = Start_ptr;
		while ( temp2->next != NULL )
		{
			temp2 = temp2->next;
		}
		temp2->next = temp;
	}
}

/*================Sort_name=================================*/

void Sort_name(int choice)
{
	/* If list is empty */
	if ( Start_ptr == NULL )
	{
		cout <<"The list is empty!" << endl;
		system("pause");
		return;
	}
	
	/* Determine the size of list */
	int counter = 1;
	Phone* temp = Start_ptr;
	
	while( temp->next != NULL )
	{
		temp = temp->next;
		counter++;
	}
	
	/* an Array of pointers to struct Phone. I couldn`t do this part by dynamic memory
	allocation i.e Phone* sort = new Phone[counter] 
	or some thing like that. if you could help, please send me your suggestion .*/
	Phone* sort[1000];
	
	sort[0] = Start_ptr;
	for ( int cnt = 1; cnt < counter; cnt++ )
	{
		sort[cnt] = sort[cnt-1]->next;
	}
	sort[counter] = NULL;
	
	/* bubble sort */
	/* This part could be better too.for example if user enter capital 'F' it comes
	   before 'a'. I had to change all letter to lower case but has no time. */
	
	for ( int i = 0; i < counter; i++ )
	{
		for ( int j = 0; j < counter - i - 1; j++)
		{
			/* Sort by name */
			if ( choice == 1 )
			{
				if ( strcmp(sort[j]->name, sort[j+1]->name) > 0 )
				{
					Phone* temp2 = sort[j];
					sort[j] = sort[j+1];
					sort[j+1] = temp2;
				}
			}

			/* Sort by family */
			else
			{
				if ( strcmp(sort[j]->family, sort[j+1]->family) > 0 )
				{
					Phone* temp2 = sort[j];
					sort[j] = sort[j+1];
					sort[j+1] = temp2;
				}
			}
		}
	}
	
	/* Showing sorted list */	
	char show[35];
	int index= 0;
	
	cout<<"\nName                                Phone       "
		<<"\n----------------------------------- ------------" << endl;
	do
	{
		strcpy(show, "");
		strcat(show, sort[index]->family);
		strcat(show, ", ");
		strcat(show, sort[index]->name);
		show[0] = toupper(show[0]);
		cout << setiosflags( ios::left )
			<< setw(36) << show << setw(12) <<sort[index]->tel <<endl;
		
	}while(sort[++index] != NULL);
	
	cout << endl;
	system("pause");
	return;
}
/*====================Menu1=======================*/
void Menu1()
{
	system("cls");
		cout << "1.  Add new phone"
			<<"\n2.  Search for name"
			<<"\n3.  Search for number"
			<<"\n4.  Sort by name"
			<<"\n5.  Sort by family"
			<<"\n6.  Show all list"
			<<"\n7.  Save data"
			<<"\n8.  Export as CSV ( Comma Separated Values )"
			<<"\n9.  Exit"
			<<"\n10. Uninstall"
			<<"\n\nYour choice : ";
}

/*====================Menu2=======================*/
void Menu2()
{
	cout << "\n1.  Find next"
		<<"\n2.  Delete current person"
		<<"\n3.  Edit current person"
		<<"\n4.  continue" << endl
		<<"\nYour choice : ";
}

/*====================Uninstall===================*/
void Uninstall()
{
	char answer = 'n';
	cout <<"Are you sure you want to delete all files include your saved data ? ( y or n)" << endl;

	cin >> answer;

	if ( toupper( answer ) == 'Y' )
	{

	system("cls");
	cout << "Uninstalling...\n";
	remove("Phonebook.cpp");
	remove("Phonebook.plg");
	remove("Phonebook.dsp");
	remove("Phonebook.ncb");
	remove("Phonebook.exe");
	remove("Data.dat");
	cout <<"Some files couldn`t be deleted. remove them manually." << endl;
	system("pause");
	Delete_all();
	exit(1);
	}
}

/*====================Edit_current================*/
void Edit_current()
{
	strcpy(current->name,"");
	strcpy(current->family,"");

	cout << "Enter the name : ";
	cin >> current->name;
	cout << "Family : ";
	cin >> current->family;
	cout << "Phone number : ";
	cin >> current->tel;

	system("cls");
}
/*====================End=========================*/
 

oranoos_mta

New Member
سوال از سالک جان عزیز

سلام سالک جان
میگم ای تابع گرافیک چرا در ویندوز عمل میکنه؟
اگه میشه راهنمایی کن مارو
خیلی مهمه
 

dokhtare_sahra

New Member
برنامه ی C++

سلام کسی می تونه این برنامه رو بنویسه ؟

برنامه ای بنویسید که رکورد های با ساختار زیل را از یک فایل خوانده و قالب یک درخت دودویی در یک فایل بر اساس شماره


دانشجویی ذخیره شود .


struct student {
long int SID
char name[20]
char f name[20]
}
 

saalek110

Well-Known Member
سلام.
ببخشید من متوجه نشدم.
قضیه چیه؟
یعنی شما یک برنامه دارید که از graphic.h استفاده کرده و در ویندوز کار می کند؟ مشکل کجاست؟
اگر به تاپیکی مربوط است لینک بدهید.
 

ned_patomat

New Member
برنامه نويسي به زبان c

سلام عرض ميكنم خدمت همه دوستان و مديران عزيز.
من تازه تو اين سايت عضو شدم.خواستم ببينم كسي ميتونه تو c يه برنامه بنويسه كه يه معادله (10معادله 10مجهول )را حل كنه.
خيلي خيلي فوري نياز دارم .ممنون ميشم اگه كمكم كنيد.
 

rasooltak

Member
كمك به يك دوست براي ....

سلام
دوستان ببخشید که نمیدونم کجا باید درخواست بدم آخه من یه تازه واردم من یه دانشجوام و به غیر از موقعی که برم کافی نت دیگه كامپيوتر در دسترسم نیست یه پروژه نسبتا ساده به زبان سی ++ هم دارم که در اون باید یه یه کلاس داشته باشیم که دارای دو لینک لیست باشه بعد یه سری از حروف الفبای انگلسی رو وارد کنیم اگر صدا دار بود بره تو لینک لیست اول و اگه بی صدا بود بره لینک لیست دوم و اگر حرف Eبه همین صورت بزرگ تایپ شه باید دو لینک لیست رو جدا جدا نمایش بده !
ممکنه خلافه قوانینه فروم باشه ولی ظلمه که یه دانشجو به خاطر این تک درس بشه 6 ترمه ولی به راحتی بتونه با این پروژه ÷اس کنه ÷س برادرانه خواهش می کنم اینو برام بنویسین و من در عوض براتون جبران می کنم قول میدم .
يه دليل اينكه خودم نمي نويسم نداشتن كامپيوتره لطفا كمكم كنيد جاي دوري نمي ره .
 

sahar_sm82

New Member
لطفا کمکم کنبد

سلام
میشه لطفا یکی خروجی این برنامه رو برام بنویسه(C هستش)
نمیدونم مثلا P= L -> next یعنی چی!!
struct list*func (struct list*L)
{
struct list p,q;
if(( L==NULL) اا (L->next==NULL)) return(L);
p=L->next;
p=func(p);
for(q=p;q->next!=NULL;q=q->next);
q->next=L;
L->next=NULL;
return(p);
}


با تشکر.:)
 

rasooltak

Member
يه سوال در مورد كلاسها

به پروژم كه نگاهي نشد لطفا اگه ميشه پروژه رو انجام داده در غير اين صورت بهم توضيح بدين كه چطور ميشه يه كلاس داراي دو لينك ليست تعريف كرد و در اونها اطلاعات ذخيره كرد
 

narcissus

New Member
++c

سلام
لطفا در حل مسائل زیر کمک کنید.
1-برنامهای که یک رشته رابگیرد وتعداد تکرار حروف الفبا را مشخص کند.
2-برنامهای که دو رشته ویک اندیس را بگیردو اولی را در دومی insert کند(مثلا "علی"و 5 و "امیربیات" تبدیل به"امیرعلی بیات" کند.)
 

elham_m

New Member
مهم:

salam raje be bedast avordan martabe zamani va pichidegi zamani determinane matris
age momkene rahnamaeem konid
mamnunam ? :neutral:
 

Ali_ix

Well-Known Member
سلام
به انجمنهای مجیدآنلاین خوش آمدید.
لطفا قبل از فعالیت قوانین انجمن رو مطالعه کنید.

این تاپیک از نظر عنوانی نامناسب، مطلب نامربوط به انجمنها و نوشته فینگلیش مشکل داره.

موفق باشید
 

saeidd

New Member
برنامه ژیتون غذا رو با زبان c

سلام برنامه ژیتون غذا رو با زبان c اگه امکان داره ممنون میشم .

تشکر از مدیر عزیز
 

flashmxbir

New Member
تغییر برنامه از C++ به C

با سلام !
من برنامه زیر که مربوط به حرکت در هزارتو هستش رو دارم که دستورات آن در C++ نوشته شده است، حال میخواهم آنرا به C برگردونم . دوستان ممنون میشم راهنمایی نمایید که چه تغییراتی لازم هست که در زیر بدم؟
(نیز اگه در مورد اشکالات موجود در زیر راهنمایی نمایید خیلی ممنون میشم)
بسیار ممنونم.

[struct offsets
{
Int a,b ;
};
Enum directions {N,NE,E,SE,S,SW,W,NW};

Offsets move[8] ;

While (stack is not empty)
{
(i,j,dir) = coordinates and direction deleted from top of stack;
While (there are more moves )
{
(g,h) = coordinates of next move;
if ((g == m)&&(h == p)) success;
if ((!maze [g][h]) // legal move
&& (!mark [g][h]) // have not been here before
{
Mark [g][h] = 1;
Dir = next direction to try;
Add (i,j,dir)to top of stack;
i=g; j=h; dir=north;
}
}
}
Cout <<"no path found "<<end1;

Void path(int m,int p)
// output a path(if any) in the maze ; maze [o] = maze [m+1] =
// maze [j][o] = maze [j][p+1] =1,0 ≤ i≤ p+1,0 ≤ j ≤ m+1.
{
// start at (1,1)
Mark [1][1] = 1;
Stack < items > stack ( m* p);
Items temp;
Temp.x = 1; temp.y =1; temp.dir = E;
Stack.Add(temp);
While (!stack.IsEmpty()) // stack not empty
{
Temp = *stack.delete(temp);//umstack
int i = temp.x; int j = temp.y;int d = temp.dir;
while(d<8)//move forward
{
int g = i + move [d] .a; int h = j +move [d] .b;
if ((g == m ) &&(h == p)) { // reached exit
// output path
cout << stack;
cout << i<<" "<< j<< end1; // last two squares on the path
cout << m<<" "<< p << end1;
return;
}


if ((!maze [g][h]) &&(!mark [g][h])){ // new position
mark [g][h] = 1;
temp.x = i; temp.y = j; temp.dir = d+1;
stack.Add(temp); // stack it
i = g; j = h; d = N; // move to ( g,h)
}
else d ++ ; // try next direction
}
}
Cout << " no path in maze " << end1;


Ostream & operator <<(ostream & os,stack < keyType>& s)
{
Os<<"top="<<s.top<<end1;
For(int i=o; i<=s.top; i++)
Os<<i<<":"<<s.stack<< end1;
Return os;
}
Ostream& operator<<(ostream& os, items& item)
{
Return os<<item.x<<","<<item.y<<","<< item.dir;
}

نیاز فوری!
 
آخرین ویرایش:
وضعیت
موضوع بسته شده است.

جدیدترین ارسال ها

بالا