2015-05-07 44 views
0

這裏就是我該做的:結構股票和數據文件

  1. 創建結構股票 - 名字[20],股票,buyprice,currprice,buycost,currcost,利潤。
  2. 從鍵盤加載 - 名稱,份額,buyprice,currprice,currcost,利潤,buycost。
  3. 排序從高分到低分
  4. 查找利潤佔利潤總額的所有股票
  5. 打印許多股票如何賺錢,賠了錢,並打破了平衡。

這是我到目前爲止有:

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h> 
#define size 2 
#include<stdlib.h> 
struct stock 
{ 
    char name[20]; 
    int shares; 
    float buyp, currp, buycost, currcost, profit; 
}; 
void load(struct stock s[], int n) 
{ 
    int i; 
    for (i = 0; i<n; i++) 
    { 
     printf("Enter name:"); 
     gets(s[i].name); 
     fflush(stdin); 
     printf("Enter shares:"); 
     scanf("%d", &s[i].shares); 
     printf("Enter buyprice"); 
     scanf("%f", &s[i].buyp); 
     printf("Enter current price"); 
     scanf("%f", &s[i].currp); 

     s[i].currcost = s[i].shares * s[i].currp; 
     s[i].buycost = s[i].shares * s[i].buyp; 
     s[i].profit = s[i].currcost - s[i].buycost; 


    } 
} 

void print(struct stock s[], int n) 
{ 
     int ne,p,z; 
     ne = p = z =0; 
    for (int i=0;i<n;i++) 
    { 
     if(s[i].profit<0) 
      ne++; 
     if (s[i].profit>0) 
      p++; 
     if(s[i].profit==0) 
      z++; 
     printf("Amount of stocks made money:%d\n",p); 
     printf("Amount of stocks lost money:%d\n",ne); 
     printf("Amount of stocks broke even:%d\n",z); 
     printf("The current cost is:%f\n",s[i].currcost); 
     printf("The profit is:%f\n",s[i].profit); 
     printf("The buycost is:%f\n",s[i].buycost); 
    } 
} 
void totprofit(struct stock s[], int n) 

{ 
    int count = 0, i; 
    float totprofit = 0.0; 
    for (i = 0; i < n; i++) 
    { 
     totprofit +=s[i].profit; 
     printf("Total profit is:%f\n",totprofit); 
     } 
    } 

void sort(struct stock s[], int n) 
{ 
    int i; int j; 
    stock t; 
    for (i = 0; i<n - 1; i++) 
     for (j = 0; j<n - 1; j++) 
      if (s[j].profit<s[j + 1].profit) 
      { 
       t = s[j]; s[j] = s[j + 1]; s[j + 1] = t; 
      } 
} 

void main() 
{ 
    stock s[size]; 
    load(s, size); 
    print(s,size); 
    totprofit(s, size); 
    sort(s,size); 
    system("pause"); 
} 

我的問題是,當它編譯,它完美的作品,直到它要求名稱再次(因爲程序運行兩次)。爲什麼?

Enter name: 
Apple 
Enter shares: 
5 
Enter buyprice: 
3 
Enter current price: 
4 
Enter name: 
Enter shares: 
3 
Enter buyprice: 
4 
Enter current price: 
5 
Amount of stocks made money:1 
Amount of stocks lost money:0 
Amount of stocks broke even:0 
The current cost is:20.000000 
The profit is:5.000000 
The buycost is:15.000000 
Amount of stocks made money:2 
Amount of stocks lost money:0 
Amount of stocks broke even:0 
The current cost is:15.000000 
The profit is:3.000000 
The buycost is:12.000000 
Total profit is:5.000000 
Total profit is:8.000000 
Press any key to continue . . . 

回答

1

你具備的功能void totprofit具有相同的名稱爲您的變量float totprofit

更改其中至少一個。

至於第7步,我不確定你在問什麼。