2011-01-30 25 views
0

私は約5人の学生のデータを表示するプログラムを書いた。私は学生名の登録番号を示す方法を知りたい。 プログラムは次のようになります。配列から行全体を印刷する方法は?

#include "stdio.h" 
#include "conio.h" 

struct student 
{ 
    char name[30]; 
    char reg[10]; 
    short int marks_dbms; 
    short int marks_prog; 
}; 

void main() 
{ 
    short int i; 

    student a[5]={  
     {"salman","B-1499",92,98}, 
     {"Haider","B-1489",34,87}, 
     {"zeeshan","B-1897",87,90}, 
     {"faizan","B-1237",56,66}, 
     {"Asif","B-1233",88,83} 

    }; 

    for(i=0; i<5; i++) 
    { 
     printf("%s\t",a[i].name); 
     printf("%s\t",a[i].reg); 
     printf("%d\t",a[i].marks_dbms); 
     printf("%d\t\n",a[i].marks_prog); 

    } 

    getch(); 

} 
+0

質問は何ですか? – Reinderien

+6

私は誰がランダム化によってインデントを教えるのだろうかと思います。 –

+0

それは 'int main()'ではなく 'main()'ではありません。 –

答えて

0

それは単純なものです。


int maxDbmsMarks = 0; 
int maxMarksIndex = 0; 
for(int i = 0; i < 5; i++) 
{ 
    if(a[i].marks_dbms > maxDbmsMarks) 
    { 
     maxDbmsMarks = a[i].marks_dbms; 
     maxMarksIndex = i; 
    } 
} 

printf("Student with the maximum dbms marks :\n"); 
printf("Name : %s, Reg : %s, dbmsMarks: %d, progMarks : %d\n", a[maxMarksIndex].name, a[maxMarksIndex].reg, a[maxMarksIndex].makrs_dbms, a[maxMarksIndex].marks_prog); 

これは、アレイ内の最大数を見つけることと同じです。上記のロジックは「最高dbmsマーク」のためのものであり、あなたはそれを変更して最高のプログラムマークまたは最高の結合マークを見つけることができます。

+0

ありがとうalent Devendra D.chavan thanks alot – sam

+0

2日前私はコードで宿題に関する質問に答え、1拍分のダウンボックスを得ました...;( – BlackBear

+1

@BlackBear:Eh。宿題タグはまったく無関係なので無視してください。もちろん、他の人は同意しません。私は彼らの議論を読んでいますが、宿題タグに関係なく、有効なプログラミング質問には引き続き回答します。誰かが大学に進学して就職しているが、その大学を募集ツールとして頼りにしているのは同社の問題であり、卒業前に学生の知識を適切にテストしていないという問題だ。 –

0

最初に、生徒をマークで比較する関数を作成します。 2つの生徒パラメータを受け入れ、最初の生徒が2番目の生徒を考慮する必要がある場合はtrueを返します。

bool compareStudentsByMarks(const student & lhs, const student & rhs) 
{ 
    // This only compares by marks_dbms, I'm not sure how you want to do it. 
    return lhs.marks_dbms < rhs.marks_dbms; 
} 

その後、<algorithm>ヘッダを含めた後、最後の引数としてあなたの関数を渡し、機能std::max_elementを使用しています。

const int SIZE_OF_STUDENT_ARRAY = 5; 
student * pmax = std::max_element(a, a+SIZE_OF_STUDENT_ARRAY, compareStudentsByMarks); 
// now pmax is a pointer to the student with the highest marks, 
// you already know how to display their info 

あなたがC++ 0xのへのアクセス権を持っている場合、これはすべての非常に簡単です:

auto pmax = std::max_element(a, a+SIZE_OF_STUDENT_ARRAY, 
    [](const student & lhs, const student & rhs) 
    { 
     return lhs.marks_dbms < rhs.marks_dbms; 
    }); 
関連する問題