مشکل در چاپ کردن آرایه ذخیره شده در نوت - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مشکل در چاپ کردن آرایه ذخیره شده در نوت

0 امتیاز

سلام به همگی

این برنامه ی منه من تو قسمت دوم برنامه ازش می خوام که اطلاعت ذخیره شده ی آرایه far رو چاپ کنه ولی نمی دونم چرا هیچی چاپ نمی شه

#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
using namespace std;
int farvardin[31],ordibehesht[31],khordad[31],tir[31],mordad[31],shahrivar[31],
mehr[30],aban[30],azar[30],dey[30],bahman[30],esfand[29];
      
float far[16],ord[16],khor[16],ti[16],mor[16],shahr[16],
meh[15],aba[15],aza[15],de[15],ba[15],esf[14],dar,s,z;
      int j=0;
void output(float []);
int main()
{
 
    ofstream list("list.txt",ios::app);
    ofstream sal("sal.txt",ios::app);
    ofstream farv("far.txt",ios::app);
      
    string name;
    int tedad,gheymatye,newadd,i=0,gheymateto,co=0,di;
    cout<<"Enter '1' For Working with Stocks:"<<endl;
    cout<<"Enter '2' For Show The List:"<<endl;
    cin>>di;
    switch(di){
        case 1:
    cout<<"Enter '1' For Adding:"<<endl;
    cout<<"Enter '2' For Accounting:"<<endl;
    cin>>newadd;
    switch(newadd){
    case 1:
    //New Adding---------------------------------------------------------------------------//
    cout<<"Enter your Stock Name:"<<endl;
    cin>>name;
    cout<<"Enter your Amount of stock:"<<endl;
    cin>>tedad;
    list<<name<<' '<<tedad<<"   ";
    cout<<endl;
    break;
    //end of Adding------------------------------------------------------------------------//
    case 2:
    //being of process--------------------------------------------------------------------//
    string na; int ted;
    cout<<"Enter your Stock Name For Accounting:";
    cin>>na;
    ifstream list;
    list.open("list.txt");
    bool found = false;
    while (list>>name>>tedad)
    {
        if(na==name)
        {
            cout<<"Enter Your Yesterday Price:"<<endl;
            cin>>gheymatye;
            s=gheymatye*tedad;
            cout<<"Enter Your Today Price:"<<endl;
            cin>>gheymateto;
            z=gheymateto*tedad;
           found = true;
        }
    }
    if (!found)
    {
       cout<<"Error Stock Name was not found!";
       break;
    }
    farvardin[i]=s;
    i++;
    farvardin[i]=z;
    for(int k=0;k<=i;k++){
    sal<<farvardin[k]<<endl;
    }
    s*=100;
    dar=(s/z);
    dar-=100;
    cout<<"%"<<dar;
    far[co]=dar;
    for(j=0;j<=i;j++)
    farv<<far[j]<<endl;
    return 0;
}
		case 2:
			output(far);
			
    }
}
  
void output(float far[])
{
	int i;
	string mah;
	cout<<"Enter mounth:"<<endl;
	cin>>mah;
	if(mah=="farvardin"){
		for(i=0;i<j;i++){
			ifstream farv;
			farv.open("far.txt");
			cout<<far[i];
		}
	}
}

 

سوال شده تیر 20, 1393  بوسیله ی raminlich (امتیاز 11)   3 3

1 پاسخ

+1 امتیاز

بخاطر اینه کهcase 2 رو دوبار تعریف کردین(خط 42 و 82 ) که اشتباهه و داخل دفعه اول فقط  به far  مقدار دادین(خط 77) که چون یک بار دیگه هم case 2 تعریف شده فقط case 2  دومی اجرا میشه و خط 77 اصلا اجرا نمیشه پس اصلا مقداری به far داده نمیشه که چاپ بشه

 

چند تا نکته  مرتبط :

 

  • از conio.h استفاده نکنین چون جزو هدر های استاندارد نیست و اکثر  کامپایلر ها ازش پشتیبانی نمی کنن به جای getch میشه از cin.get() استفاده کرد
  • استفاده از متغیر global (متغیر هایی که قبل از main و خارح از تابع تعریف کردین ) اصولا کار درستی نیست و توی برنامه های بزرگتر یا حتی همین برنامه ساده ای نوشتین مشکل ایجاد می کنه و به شدت برنامه رو پیچیده می کنه بهتره متغیر ها رو داخل توابع  جایی که لازمه تعریف کنین و استفاده کنین
  • بعد این که تقریبا همه ی ادیتور ها کلید هایی برای مرتب کردن خودکار کد دارن که برای خوانا تر کردن کد میشه ازشون استفاده کرد

من با مرتب کردن کدتون راحت دیدم که 2 بار case 2 به اشتباه تعریف شده

 برای مرتب کردن کد داخل visual studio : 

visual studio --> ctrl + k + f

یا  برای Qt :

Qt creator --> ctrl +I

پاسخ داده شده تیر 21, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده تیر 21, 1393 بوسیله ی BlueBlade
...