廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4327 個閱讀者
 
<< 上頁  1   2   3  >>(共 3 頁)
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
唐老鴨
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x230
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

我直接用你的程式碼來幫你改.....
晚點放上來給你....
因為有很多小錯誤要解釋.....
所以乾脆全部幫你改比較快.....
不過我只有VC6.0喔....
所以如果.NET不能執行我不保證喔 表情 .....


沒東西可以抓
獻花 x0 回到頂端 [20 樓] From:美國 | Posted:2005-04-04 06:00 |
唐老鴨
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x230
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

幫你改好了....
也測試過一遍了....
看起來應該沒有問題.....
但是我沒有加入同時有兩個以上最高或最低分的情況...
若是你要這種情況....
則必須在程式裡面多做一個迴圈來做判斷.....
也要修改一點點的程式碼(maxaddress跟minaddress這兩個變數就可以不要了)....
那邊就給你練習囉表情 .....

這是程式碼....
複製程式
#include <iostream>
using namespace std;

struct person  // 定義一個結構資料型態Student
{ 
       char name[100][10];
       char id[100][10];
       int score[100][3];

}student;


void main()
{       
       int number,i,j;
       int total=0;
       float average;
       int max;
       int min;
       int maxaddress=0;  //記錄該科目分數最高的人的陣列位置
       int minaddress=0;  //記錄該科目分數最低的人的陣列位置
       
       cout <<"Exercise 3"<<endl;       
       cout <<"Class : 二子三A   Name : 吳建鋒   ID : D93232109 " << endl;
       cout <<"How many students in class: ";
       cin >> number;
        
       
       for( i=0 ; i<number; i++)
       {
              cout << "Name of student " << i+1 << ": ";//輸入姓名
              cin >> student.name[i];
              cout << "Id of student "<< i+1 <<": "; //輸入ID
              cin >> student.id[i];
              
              for( j=0 ; j<3 ; j++)
              {
                     cout << "Score " << j+1 << " of student "<< i+1 <<": "; //輸入科目的成績
                     cin >> student.score[i][j];
              }
       }
       
       cout << "\nName\tID\tScore1\tScore2\tScore3\taverage\n";       //輸出成績表
       for( i=0 ; i<number ; i++)
       {
              cout<<student.name[i]<<"\t"<<student.id[i]<<"\t";
             for( j=0; j<3 ; j++)
              {
                     cout<<student.score[i][j]<<"\t";
                     total+=student.score[i][j];
              }
              average=total/3;
              total=0;
              cout<< average <<endl;
       }
       cout<<endl;
           
       for( j=0 ; j<3 ; j++) //比較科目的最高分,低分
       {
              max = student.score[0][j];
              min = student.score[0][j];
              cout<<student.score[0][j]<<endl;
              maxaddress=0;
              minaddress=0;
       
              for( i=1 ; i<number ; i++)
              {
                     if (student.score[i][j]>max)
                     {
                            maxaddress = i;
                            max = student.score[i][j];
                     }
                     
                     if (student.score[i][j]<min)
                     {
                            minaddress = i;
                            min = student.score[i][j];
                     }
                     
              }
              
              cout <<"Course"<< j+1<< ":\n";
              cout <<"Highest Score:"<<endl;  //輸出該科目的最高分
              cout <<"Name: "<<student.name[maxaddress]<<"\t";
              cout <<"Id: "<<student.id[maxaddress]<<"\t";
              cout <<"Score: "<<student.score[maxaddress][j]<<endl;

        cout <<"Lowest Score:"<<endl;  //輸出該科目的最低分
              cout <<"Name: "<<student.name[minaddress]<<"\t";
              cout <<"Id: "<<student.id[minaddress]<<"\t";
              cout <<"Score: "<<student.score[minaddress][j]<<endl;

              cout <<"Fail List:"<<endl;  
              
              for( i=0 ; i<number ; i++) //印出該科不及格的人
              {
                     if(student.score[i][j]<60)
                     {
                            cout <<"Name: "<<student.name[i]<<"\t";
                            cout <<"Id: "<<student.id[i]<<"\t";
                            cout <<"Score: "<<student.score[i][j]<<endl;
                     }
              }
              
              cout <<endl;
       }
              
    system("pause");
}


記得把< i >改成 [ i ] 喔.....


[ 此文章被唐老鴨在2005-04-04 08:18重新編輯 ]

此文章被評分,最近評分記錄
財富:25 (by panasonic732) | 理由: 辛苦了...
支持度:10 (by panasonic732) | 理由: 特別獎勵 ^^


沒東西可以抓
獻花 x1 回到頂端 [21 樓] From:美國 | Posted:2005-04-04 08:13 |
jianfengtw
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

昨天半夜睡覺時
我也突然想到
我的程式這邊邏輯不對
複製程式
for( j=0 ; j<3 ;j++) //比較科目的最高分,低分
       { 
              for( i=0 ; i<n ; i++)
              {
              [color=crimson]big = small =student.score[i][j][0];
              if(student.score[i+1][j][0]>big)
              max=i+1;
              if(student.score[i+1][j][0]<small)
              min=i+1;[/color]
              }


要改成像這樣
複製程式
 for( i=1 ; i<n ; i++)
              {
                     if(student.score[i][j][0]>max)
                     {              
                            maxaddress=i;
                            max=student.score[i][j][0];
                            cout<<max<<endl;
                     }
                     if(student.score[i][j][0]<min)
                     {                                   
                            minaddress=i;
                            min=student.score[i][j][0];
                            cout<<min<<endl;
                     }
沒想到大大也看出我這邊比大小的地方有寫錯
經過早上修改之後
已經可以執行了
謝謝大大的幫忙
感激不盡 表情 表情


獻花 x0 回到頂端 [22 樓] From:台灣台灣索尼 | Posted:2005-04-04 13:06 |
jianfengtw
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

再次請教唐大大
如果我要把

struct person {char name[100][10];// 定義一個結構資料型態Student
        char id[100][10];                      
        int score[100][3][2];
        float average[100];
        }student ;


改成用new 的指令的話
要怎麼改
因為它好像沒辦法弄成二維陣列以上的宣告
因為我不想每個科目都開一個陣列
<因為下一個作業就是要改成 new 來寫>
這樣要寫很長

static char *name =new char[n];
      char *id =new char[n];                      
      int *score=new int[n][3][2];
      float *average=new float[n];
還有為什麼要用static作為開頭
而不是struct

為什麼我會有此一問呢
因為我翻了四,五本書
對於new的介紹都很少
有範例但都是用一維陣列

還有那要怎樣才能用結構跟new 結合為一

至於輸出同分的
我是用二個for下去寫是ok的
還有更好的方法嗎

for( j=0 ; j<3 ;j++) //比較科目的最高分,低分
    {
        max =student.score[0][j][0];
        min =student.score[0][j][0];
        for( i=1 ; i<n ; i++)
        {
              if(student.score[j][0]>max)
              {        
                  max=student.score[j][0];
              }
              if(student.score[j][0]<min)
              {                      
                  min=student.score[j][0];
              }
             
        }
        cout <<"\nCourse"<< j+1<< ":\n"<<"Highest Score:\n";//輸出科目的最高分
        for( i=0 ; i<n ; i++ )
        {
              if(max==student.score[j][0])
              {
                  cout <<"Name:"<<"\t"<<student.name<<"\t";
                  cout <<"Id:"<<"\t"<<student.id<<"\t";
                  cout <<"Score"<<j+1<<":\t"<<student.score[j][0]<<endl;
              }
        }
        cout <<"Lowest Score:\n";//輸出科目的最低分
        for( i=0 ; i<n ; i++ )
        {
              if(min==student.score[j][0])               {
                  cout <<"Name:"<<"\t"<<student.name<<"\t";
                  cout <<"Id:"<<"\t"<<student.id<<"\t";
                  cout <<"Score"<<j+1<<":\t"<<student.score[j][0]<<endl;
              }
        }
    }
感謝大大的回覆教學
讓小生我學了不少


[ 此文章被jianfengtw在2005-04-06 16:07重新編輯 ]


獻花 x0 回到頂端 [23 樓] From:台灣台灣索尼 | Posted:2005-04-06 15:58 |
唐老鴨
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x230
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用jianfengtw於2005-04-6 15:58發表的 :
再次請教唐大大
如果我要把

static char *name =new char[n];
    char *id =new char[n];              
    int *score=new int[n][3][2];
    float *average=new float[n];                      
.......

妳這邊的寫法不太對吧.....
妳確定你這樣寫可以執行ㄇ 表情 ....
若你要用new宣告一個二維的陣列....
應該要這樣寫才對吧int (*p)[3] = new int[5][3];
三維就像這樣int (*score)[3][2]=new int[100][3][2];.....
static只是用在宣告該變數的生命期.....
跟你上面提的結構一點關係也沒有.....


沒東西可以抓
獻花 x0 回到頂端 [24 樓] From:美國 | Posted:2005-04-06 16:53 |
唐老鴨
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x230
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

至於你說後面程式的程式的寫法.....
如果你沒在宣告新增其他變數的情況下.....
還有你題目的要求下....
我能想到的也只有用兩個迴圈去判斷了阿....
妳的寫法跟我要你改的寫法是一樣的.....
除非你多此一舉把她弄成一個FUNCTION....
這樣可以少一個表情 .....
不過實在沒什麼必要 表情 .....


沒東西可以抓
獻花 x0 回到頂端 [25 樓] From:美國 | Posted:2005-04-06 17:03 |
jianfengtw
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

再次感謝大大的開釋
我已經改好了

不知道我要何年何月
才有大大的程式的功力

謝謝大大的教導
表情 表情


獻花 x1 回到頂端 [26 樓] From:台灣台灣索尼 | Posted:2005-04-06 17:14 |
jianfengtw
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

唐大大
那宣告成這樣之後
static char (*name)[10] = new char[n][10];// 定義一個結構資料型態Student
          char (*id)[10] = new char[n][10];
          int (*score)[3][2] = new int[n][3][2];
          float *average = new float[n];

那我要釋放記憶體是不是只要下
delete *name,*id..........
照一維的陣列就會釋放了

因為我剛用
delete (*name)[10],(*score)[3][2]
編譯就不行

唐大大!!!
請原諒愚昧無知的我
問這麼多的問題
會天打雷劈~~ 表情


獻花 x0 回到頂端 [27 樓] From:台灣台灣索尼 | Posted:2005-04-06 17:34 |
唐老鴨
個人頭像
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x230
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用jianfengtw於2005-04-6 17:34發表的 :
static char (*name)[10] = new char[n][10];// 定義一個結構資料型態Student
      char (*id)[10] = new char[n][10];
      int (*score)[3][2] = new int[n][3][2];
      float *average = new float[n];

那我要釋放記憶體是不是只要下
delete *name,*id..........
照一維的陣列就會釋放了

因為我剛用
delete (*name)[10],(*score)[3][2]
編譯就不行
.......
妳這樣寫寫看.....
把她分成兩行....
delete [] name;
delete [] score;

不過我很好奇你們老師的要求是什麼.....
我平常寫程式很少會用陣列指標....
如果像這樣的題目....
我都會用串列的結構來寫.....
因為這樣寫我也常常會寫錯 表情.....


沒東西可以抓
獻花 x0 回到頂端 [28 樓] From:美國 | Posted:2005-04-06 17:53 |
jianfengtw
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x3
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

謝謝大大的指導

可能讓我們熟指令如何使用吧

串列的結構二專曾經有上過
但從來沒用過
那時老師教的不太好,有聽沒懂

等有空再來改改看用串列的結構


獻花 x0 回到頂端 [29 樓] From:台灣台灣索尼 | Posted:2005-04-07 00:35 |

<< 上頁  1   2   3  >>(共 3 頁)
首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.055903 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言