2

EDITED:私は試して検索していましたが、(j = = 3)の部分だけをフロートに変換する方法が見つかりませんでした.2から6までの評価(正確な単語のグレードまたはidk)が必要なためです-それ3,5になる可能性があるので、フロートが必要です。OK、私のコードをチェックしてください:

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
  unsigned int m[25][4], a[25][4], b[25][4];
  int i,j,n,k=0,p=0,g=0,t=0;
  do
  {
    cout<<"Enter number of students: ";cin>>n;
  }
  while(!(n>0 && n<=25));

  for(i=0;i<n;i++)
  {
    cout<<"Student N:"<<i+1<<"\n";
    for(j=0;j<4;j++)
      if(j==0)
      {
        do
        {
          cout<<"Fak nomer: ";cin>>m[i][j];
        }
        while(!(m[i][j]>=10000000 && m[i][j]<100000000));
      }
      else if(j==1)
      {
        do
        {
          cout<<"Enter Speciallity - 52 for E, 61 for AIUT"<<endl;
          cout<<"Code: ";cin>>m[i][j];
        }
        while(!(m[i][j]==52 || m[i][j]==61));   
      }
      else if(j==2)
      {
        do
        {
          cout<<"Group: ";cin>>m[i][j];
        }
        while(!(m[i][j]==1 || m[i][j]==2 || m[i][j]==3 || m[i][j]==4));
      }
      else
      {
        //float f=m[i][j];(i tried to replace all m[i][j] with f but..)
        do
        {
          cout<<"Avg. evaluation: ";cin>>m[i][j];
        }
        while(!(m[i][j]>=2 && m[i][j]<=6));
        //m[i][j]=f; 
      }
    }
    for(i=0;i<n;i++)
    {
      for(j=0;j<4;j++)
        cout<<setprecision(8)<<m[i][j]<<"\t";
      cout<<endl;
    }
    cout<<endl; 
  }

配列全体をフロートにするので、2 つの新しい配列に基づいて情報を設定する必要があるとしましょう。

if(m[i][1]==52)
   a[k][p]=m[i][j]
else if(m[i][1]==61)
   b[g][t]=m[i][j]

実際には、52 の場合は 52 のみの配列を表示するには、グループ コードに基づいて表示する必要があります... 61 の場合は、61 の配列のみを表示するには、何らかの並べ替えを行います...いくつかの方法を試しましたが、次のようになります。 -9.2559631e+061" そして、私が言ったように、それを機能させるには符号なし配列が必要だと思います... 編集済み!

4

2 に答える 2

0

できません。配列には、同じタイプのすべてのエントリがあります。

ただし、これを回避するにはいくつかの方法があります。1 つ目は、型の配列全体を作成することfloatです。もう 1 つは、Boost Any クラスのようなものを使用することです。

于 2012-11-26T10:00:36.867 に答える
0

そのような異なるデータ項目を格納するために、任意の数値からインデックス付けされた配列を使用しないでください。あなたがすることは、みんなに頭を悩ませることだけです。

struct Student
{
    unsigned int fak;
    unsigned int speciality;
    unsigned int group;
    float grade;
}

Student students[25];
students[20].group = 1.7f;

この件に関しては、マジック ナンバーの使用もやめてください (数字の 25 が 2 回表示される場合、それは定数である必要があります)。

const int studentCount = 25;
Student students[studentCount];

他にもありますが、j==3 が何を表しているかを私たちや一緒に仕事をしている人々、または来週のあなたの未来の自分に尋ねるのではなく、すべての名前を付けてコードを書き始めてください...

于 2014-05-21T16:17:41.317 に答える