iT邦幫忙

0

C++學校程式作業

  • 分享至 

  • xImage

題目是
請製作一個結構陣列,包含5筆記錄,每筆記錄包括5個欄位:學號(No.).姓名(Name).平時分數(NScore).期中分數(MScore).
期末分數(EScore),請輸出各記錄的學號,姓名及學期成績(平常40%,期中30%和期末30%)。https://ithelp.ithome.com.tw/upload/images/20191213/20122736YgmHJFyClS.png
目前是寫成這樣 不過不知道為什麼輸出不出來
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
struct student
{
public double Nscore, Mscore, Escore, score;
public string name, no;
}
class Program
{
static void Main(string[] args)
{
string yes = "", nekoname = "";
double sum = 0;
int count = 0;
student[] neko = new student[100];
Console.Write("\n === 程式語言設計5人小組學期成績試算 === \n");
do
{
count += 1;
Console.Write("\n 請輸入第{0}位同學姓名:", count);
neko[count - 1].name = Console.ReadLine();
Console.Write("\n 請輸入第{0}位同學學號:", count);
neko[count - 1].no = Console.ReadLine();
Console.Write("\n 請輸入第{0}位同學平時成績:", count);
neko[count - 1].Nscore = double.Parse(Console.ReadLine()) * 0.4;
Console.Write("\n 請輸入第{0}位同學期中成績:", count);
neko[count - 1].Mscore = double.Parse(Console.ReadLine()) * 0.3;
Console.Write("\n 請輸入第{0}位同學期末成績:", count);
neko[count - 1].Escore = double.Parse(Console.ReadLine()) * 0.3;
neko[count - 1].score = neko[count - 1].Nscore + neko[count - 1].Mscore + neko[count - 1].Escore;
sum += neko[count - 1].score;
Console.Write("\n 是否繼續?(Y/N):");
yes = Console.ReadLine();
if (count >= 5)
break;
} while (yes == "y" || yes == "Y");
Console.WriteLine("\n ===小組成績表===");
Console.WriteLine("\n" + "姓名" + "\t" + "學號" + "\t " + "平時成績" + " " + "期中成績" + " " + "期中成績" + " " + "學期成績");
for (int i = 0; i < count; i++)
Console.WriteLine("\n" + neko[i].name + "\t" + neko[i].no + "\t " + neko[i].Nscore / 0.4 + "\t " + neko[i].Mscore / 0.3 + "\t " + neko[i].Escore / 0.3 + "\t " + neko[i].score + ",");
Console.Write("\n ==共輸入{0}位同學成績,小組學期平均為{1}分==", count, sum / count);
do
{
Console.Write("\n 請輸入欲查詢成績的學生之姓名:");
nekoname = Console.ReadLine();
Array.Sort(neko.score, neko.no, neko.name, neko.Nscore, neko.Mscore, neko.Escore);
Array.Reverse(neko.score, neko.no, neko.name, neko.Nscore, neko.Mscore, neko.Escore);
Console.WriteLine("\t" + nekoname + "的平時成績為:" + neko[Array.BinarySearch(neko.name, nekoname)].score + "分");
Console.WriteLine("\t" + nekoname + "的期中成績為:" + neko[Array.BinarySearch(neko.name, nekoname)].score + "分");
Console.WriteLine("\t" + nekoname + "的期末成績為:" + neko[Array.BinarySearch(neko.name, nekoname)].score + "分");
Console.WriteLine("\t" + nekoname + "的學期成績為:" + neko[Array.BinarySearch(neko.name, nekoname)].score + "分");
Console.WriteLine("\t" + nekoname + "的名次為:" + Array.BinarySearch(neko.name, nekoname) + "名");
Console.Write("\n 是否繼續查詢?(Y/N):");
yes = Console.ReadLine();
} while (yes == "y" || yes == "Y");
Console.WriteLine("== 輸入與查詢結束!按ENTER或叉叉即結束此程式! ==");
Console.Read();
}
}
}

a8918136 iT邦新手 5 級 ‧ 2019-12-14 09:46:12 檢舉
建議你先把下面的錯誤訊息看過,排除完之後真的有問題再上來提問....
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
小魚
iT邦大師 1 級 ‧ 2019-12-13 23:34:34

這是C++ !?

小魚 iT邦大師 1 級 ‧ 2019-12-14 21:12:54 檢舉

1.或許可以考慮不要用陣列, 改成用List.
2.你要實作排序的方法.
3.貼程式碼建議可以用兩個```包起來

0
阿展展展
iT邦好手 1 級 ‧ 2019-12-14 04:16:03

原來C++有 static void Main 跟 Console.Write 阿 (長姿勢惹/images/emoticon/emoticon46.gif

0

1.你這個應該是C#?不是C++?
2.你的Array.sort() 使用方法不對,你的compiler已經告知你錯誤,有紅線,下方也有錯誤訊息
3.Array.sort不使用Default的compare method的話,你要自己撰寫並且帶入
4.程式貼上來的方法建議採用其他方式
5.程式可以詳細思考的地方有很多,舉個例子yes string的內容可以讀取進來之後,全部換成小寫之後,do while的判定條件其實就可以單獨判斷小寫的部分就好,類似這樣的部分。

我要發表回答

立即登入回答