PDA

View Full Version : مشکل با switch case



aali361
چهارشنبه 17 اردیبهشت 1393, 00:44 صبح
دوستان مشکل این کد چیه که هر عددی رو میزنم پیغام دیفالت رو میده ؟

#include<iostream>using namespace std;
int main()
{
int a;
cout << "1)insert" << endl << "2)sort" << endl << "3)search" << endl << "4)show" << endl << "5)delete" << endl << "6)exit"<<endl;
cin >> a;
switch (a)
{
case1:
//insert
break;;
case2:

cout << "sort";
break;
case3:
//search
break;
case4:
//show
break;
case5:
//delet
break;
case6:
//exit
break;


default:
cout << "Unknown value"<<endl;
break;

}
system("pause");
}

pooyan.a
چهارشنبه 17 اردیبهشت 1393, 11:36 صبح
سلام بین case و عدد باید فاصله بذاری
یعنی مثلا
case 1:

aali361
چهارشنبه 17 اردیبهشت 1393, 13:04 عصر
#include<iostream>
#include<fstream>
using namespace std;
struct student{
int id;
char name[100];
float sc;

};
int main()
{
int a;
ofstream f("e:\\b.txt");


cout << "1)insert" << endl << "2)sort" << endl << "3)search" << endl << "4)show" << endl << "5)delete" << endl << "6)exit"<<endl;
cin >> a;
switch (a)
{
case 1:
//insert
int i, j;
student b[100];
cout << "how many student do you want to insert?" << endl;
cin >> i;
for (j = 1; j <= i; j++)
cin >> b[j].id>>b[j].name >> b[j].sc;
for (j = 1; j <= i; j++)
f << b[j].id << '\t' << b[j].name << '\t'<< b[j].sc << endl;
break;;
case 2:
//sort


break;
case 3:
//search
break;
case 4:
//show
break;
case 5:
//delet
break;
case 6:
//exit
break;


default:
cout << "Unknown value"<<endl;
break;

}
system("pause");
}


الان من تا اینجا پیش رفتم که میاد شماره دانشجویی و نام و نمره رو میگیره و در یک فایل ذخیره میکنه . حالا واسه قسمت دوم که سورت هست باید چی کار کنم ؟ چه جوری باید اطلاعات رو بخونم ؟ باید بیاد و بر اساس نمرات مرتب کنه .

rahnema1
چهارشنبه 17 اردیبهشت 1393, 14:56 عصر
دوست عزیز چندین و چند بار خواندن و نوشتن از فایل در این تالار توضیح داده شده. جستجو کنید. در مورد مرتب کردن هم که در این تاپیک بهتون گفتم که:

http://barnamenevis.org/showthread.php?450365

aali361
چهارشنبه 17 اردیبهشت 1393, 15:48 عصر
دوست عزیز چندین و چند بار خواندن و نوشتن از فایل در این تالار توضیح داده شده. جستجو کنید. در مورد مرتب کردن هم که در این تاپیک بهتون گفتم که:

http://barnamenevis.org/showthread.php?450365

استفاده همزمان با دستورات سویچ کیس منو یه خورده گیج کرده .
الان به اینجا رسوندم .
#include<iostream>
#include<fstream>
using namespace std;
struct student{
int id;
char name[100];
float sc;

};
int main()
{
int a;
ofstream f("e:\\b.txt");
ifstream fz("e:\\b.txt");
cout << "1)insert" << endl << "2)sort" << endl << "3)search" << endl << "4)show" << endl << "5)delete" << endl << "6)exit"<<endl;
cin >> a;
switch (a)
{
case 1:
//insert
int i, j;
student b[100],temp;
cout << "how many student do you want to insert?" << endl;
cin >> i;
for (j = 1; j <= i; j++)
cin >> b[j].id>>b[j].name >> b[j].sc;
for (j = 1; j <= i; j++)
f << b[j].id << '\t' << b[j].name << '\t'<< b[j].sc << endl;
break;;
case 2:
//sort

for (j = 1; j <= i; j++)
fz >> b[j].id >> b[j].name >> b[j].sc;
for (j = 1; j <= i; j++)
{
for (j = i + 1; j <= i; j++)
{
if (b[i].sc < b[j].sc)
{
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
for (j = 1; j <= i ; j++)
cout << b[j].id << '\t' << b[j].sc << endl;
break;
case 3:
//search
break;
case 4:
//show
break;
case 5:
//delet
break;
case 6:
//exit
break;


default:
cout << "Unknown value"<<endl;
break;

}
system("pause");
}

اما الان مشکل اینه که بعد اینسرت نمیتونم برگردم به منو تا بیبینم سورت کار میکنه یا نه و وقتی هم برنامه رو میبندم دوباره باز میکنم میبینم که اطلاعات تو فایل پاک شده .؟چی کار کنم ؟

rahnema1
چهارشنبه 17 اردیبهشت 1393, 17:27 عصر
برگشتن و خروج درست شد و فایل هم ذخیره میشه ببینیم بقیه رو چیکار می کنید

#include<iostream>
#include<fstream>
#include <stdlib.h>
using namespace std;
struct student{
int id;
char name[100];
float sc;

};
int main()
{
int a;
bool loop=true;
ofstream f("e:\\b.txt");
ifstream fz("e:\\b.txt");
while(loop){
cout << "1)insert" << endl << "2)sort" << endl << "3)search" << endl << "4)show" << endl << "5)delete" << endl << "6)exit"<<endl;
cin >> a;
switch (a)
{
case 1:
//insert
int i, j;
student b[100],temp;
cout << "how many student do you want to insert?" << endl;
cin >> i;
for (j = 1; j <= i; j++)
{cout << "id name score: ";
cin >> b[j].id>>b[j].name >> b[j].sc;}
for (j = 1; j <= i; j++)
f << b[j].id << '\t' << b[j].name << '\t'<< b[j].sc << endl;
break;
case 2:
//sort

for (j = 1; j <= i; j++)
fz >> b[j].id >> b[j].name >> b[j].sc;
for (j = 1; j <= i; j++)
{
for (j = i + 1; j <= i; j++)
{
if (b[i].sc < b[j].sc)
{
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
for (j = 1; j <= i ; j++)
cout << b[j].id << '\t' << b[j].sc << endl;
break;
case 3:
//search
break;
case 4:
//show
break;
case 5:
//delet
break;
case 6:
//exit
loop=false;
break;


default:
cout << "Unknown value"<<endl;
break;

}
}
system("pause");
}

aali361
چهارشنبه 17 اردیبهشت 1393, 18:34 عصر
برگشتن و خروج درست شد و فایل هم ذخیره میشه ببینیم بقیه رو چیکار می کنید

#include<iostream>
#include<fstream>
#include <stdlib.h>
using namespace std;
struct student{
int id;
char name[100];
float sc;

};
int main()
{
int a;
bool loop=true;
ofstream f("e:\\b.txt");
ifstream fz("e:\\b.txt");
while(loop){
cout << "1)insert" << endl << "2)sort" << endl << "3)search" << endl << "4)show" << endl << "5)delete" << endl << "6)exit"<<endl;
cin >> a;
switch (a)
{
case 1:
//insert
int i, j;
student b[100],temp;
cout << "how many student do you want to insert?" << endl;
cin >> i;
for (j = 1; j <= i; j++)
{cout << "id name score: ";
cin >> b[j].id>>b[j].name >> b[j].sc;}
for (j = 1; j <= i; j++)
f << b[j].id << '\t' << b[j].name << '\t'<< b[j].sc << endl;
break;
case 2:
//sort

for (j = 1; j <= i; j++)
fz >> b[j].id >> b[j].name >> b[j].sc;
for (j = 1; j <= i; j++)
{
for (j = i + 1; j <= i; j++)
{
if (b[i].sc < b[j].sc)
{
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
}
}
for (j = 1; j <= i ; j++)
cout << b[j].id << '\t' << b[j].sc << endl;
break;
case 3:
//search
break;
case 4:
//show
break;
case 5:
//delet
break;
case 6:
//exit
loop=false;
break;


default:
cout << "Unknown value"<<endl;
break;

}
}
system("pause");
}


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

rahnema1
چهارشنبه 17 اردیبهشت 1393, 19:17 عصر
ofstream f("e:\\b.txt",ios_base::app);

aali361
چهارشنبه 17 اردیبهشت 1393, 19:26 عصر
باز هم ممنون . قسمت سرچ رو هم به مشکل برخوردم . این کد مشکلش چیه ؟

case 3:
//search
system("cls");
cout << "please insert id"<<endl;
int idd;
cin >> idd;
system("cls");
for (j = 0; j <= i - 1; j++)
fz >> b[j].id >> b[j].name >> b[j].sc;
int h = 0;
for (j = 0; j <= i - 1; j++)
{
if (b[j].id == idd)
h = 1;

}
if (h == 0)
cout << "unknown value";
else
cout << b[j].id << '\t' << b[j].name << '\t' << b[j].sc << endl;
break;




ویرایش حل شد .

aali361
چهارشنبه 17 اردیبهشت 1393, 19:50 عصر
نقریبا پروژه پایان ترمم تموم شد . اما یه مشکلی هست اونم این که وقتی برای اولین بار اطلاعات رو اینسرت میکنم تمامی قسمت ها به خوبی کار میکنه اما وقتی برنامه رو میبندم و دوباره اجراش میکنم با این که ظاهرا اطلاعات توی فایل متنی وجود داره اما وجود نداره . چون مثلا وقتی ویو رو میزنم هیچی نشون نمیده و سورت و سرچ هم به همین صورته . مشکل از کجاست ؟

#include<iostream>
#include<fstream>
#include <stdlib.h>
using namespace std;
struct student{
int id;
char name[100];
float sc;


};
int main()
{
int a;
bool loop = true;
ofstream f("e:\\b.txt",ios_base::app);
ifstream fz("e:\\b.txt");
while (loop){
cout << "1)insert" << endl << "2)sort" << endl << "3)search" << endl << "4)show" << endl << "5)delete" << endl << "6)exit" << endl;
cin >> a;
switch (a)
{
case 1:
//insert
system("cls");
int i, j;
student b[100], temp;
cout << "how many student do you want to insert?" << endl;
cin >> i;
for (j = 1; j <= i; j++)
{
system("cls");
cin >> b[j].id >> b[j].name >> b[j].sc;
system("cls");
}
for (j = 1; j <= i; j++)
f << b[j].id << '\t' << b[j].name << '\t' << b[j].sc << endl;
f.close();
system("cls");
break;
case 2:
//sort
system("cls");
int z;
for (j = 0; j <= i-1; j++)
fz >> b[j].id >> b[j].name >> b[j].sc;
for (j = 0; j <= i-1; j++)
{
for (z = 0; z <= i-2; z++)
{
if (b[z+1].sc > b[z].sc)
{
temp = b[z+1];
b[z+1] = b[z];
b[z] = temp;
}
}
}
for (j = 0; j <= i-1; j++)
cout << b[j].id << '\t' <<b[j].name<<'\t'<< b[j].sc << endl;
break;
case 3:
//search
{
system("cls");
cout << "please insert id" << endl;
int idd;
cin >> idd;
system("cls");
for (j = 0; j <= i - 1; j++)
fz >> b[j].id >> b[j].name >> b[j].sc;
int h = 0;
for (j = 0; j <= i - 1; j++)
{
if (b[j].id == idd)
h = 1;


}
if (h == 0)
cout << "unknown value" << endl;
else
cout << b[j].id << '\t' << b[j].name << '\t' << b[j].sc << endl;
}
break;
case 4:
//show
{
system("cls");
for (j = 0; j <= i - 1; j++)
{
fz >> b[j].id >> b[j].name >> b[j].sc;
cout << b[j].id << '\t' << b[j].name << '\t' << b[j].sc << endl;
}

}
break;
case 5:
//delet
break;
case 6:
//exit
loop = false;
break;




default:
cout << "Unknown value" << endl;
loop = false;
break;


}
}

}