Thread: Major Problem

  1. #1
    Registered User
    Join Date
    Dec 2001
    Posts
    3

    Post Major Problem

    Program keeps reading students up to 30. Saves into file 'student.dat' record is
    char sLastName[20]
    char sId[6]
    char sMark[3]
    int iMark
    User enters mark as integer program fill in sMark with letter grade
    Here is my work
    After awhile I started to comment out bits of code but no help







    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>


    struct class
    {
    char sLastName[20];
    char sId[6];
    char sMark[3];
    int iMark[];
    };

    void EnterRecord(struct class*)

    int main(void)
    {
    struct class student[30];
    int iIndex = {0}, iNumber = 0, iMark = {0};
    char cAnswer;
    char /*cLetter ={0}, cChar ={0},*/ sName = {0}, sStuId ={0}, sMark = {0};



    printf("Would you like to enter a student record?");
    scanf(" %c", &cAnswer);

    while (cAnswer=='y' || cAnswer=='Y')
    {

    printf("Enter student name, Id, mark: ");
    gets(student->sLastName, student->sId, student->iMark, student->sMark );

    sMark = EnterRecord(/*int iStuId[],*/ student, iMark[] , sMark[]/* char cLetter[], char cChar[]*/)

    printf("Student Name: %s, Id: %s, Mark: %i, Grade: %s\n", student.sLastName,
    student->sId, &student->iMark, student->sMark);

    ++iIndex;
    printf("continue Processing?");
    scanf(" %c", cAnswer);
    }
    }



    /************************************************** ************************/

    EnterRecord( &student)
    { int iNumber, iIndex;
    char sMark;

    iNumber = iMark[iIndex] ;


    if (iNumber < 50)
    {
    sMark[iIndex] = "F"
    /*cChar[iIndex] = 32; */
    }

    if (iNumber >= 50 && iNumber <= 52)
    {
    sMark[iIndex] = "D-";
    /*cChar[iIndex] = '-';
    }

    if (iNumber >= 53 && iNumber<= 56)
    {
    cLetter[iIndex] = 'D';
    cChar[iIndex] = 32;
    }

    if (iNumber >= 57 && iNumber <= 59)
    {
    cLetter[iIndex] = 'D';
    cChar[iIndex] = '+';
    }

    if (iNumber >= 60 && iNumber <= 62)
    {
    cLetter[iIndex] = 'C';
    cChar[iIndex] = '-';
    }

    if (iNumber >= 63 && iNumber <= 66)
    {
    cLetter[iIndex] = 'C';
    cChar[iIndex] = 32;
    }

    if (iNumber >= 67 && iNumber <= 69)
    {
    cLetter[iIndex] = 'C';
    cChar[iIndex] = '+';
    }

    if (iNumber >= 70 && iNumber <= 72)
    {
    cLetter[iIndex] = 'B';
    cChar[iIndex] = '-';
    }

    if (iNumber >= 73 && iNumber <= 76)
    {
    cLetter[iIndex] = 'B';
    cChar[iIndex] = 32;
    }

    if (iNumber >= 77 && iNumber <= 79)
    {
    cLetter[iIndex] = 'B';
    cChar[iIndex] = '+';
    }

    if (iNumber >= 80 && iNumber <= 84)
    {
    cLetter[iIndex] = 'A';
    cChar[iIndex] = '-';
    }

    if (iNumber >= 85 && iNumber <= 89)
    {
    cLetter[iIndex] = 'A';
    cChar[iIndex] = 32;
    }

    if (iNumber >= 90 && iNumber <= 100)
    {
    cLetter[iIndex] = 'A';
    cChar[iIndex] = '+';
    } */
    return sMark;


    /* printf("Would you like to enter a student record?");*/

    }















  2. #2
    Not sure if I undertand the problem you are having.

    Are you wanting to read in more than 30 students? Or am I completely off track here?
    DrakkenKorin

    Get off my Intarweb!!!!

  3. #3
    Registered User
    Join Date
    Dec 2001
    Posts
    3
    30 id max. user can quit ant time

  4. #4
    Registered User
    Join Date
    Nov 2001
    Posts
    32

    Major Problem

    Dear Kalski

    I am a bit interested in your problem, though cannot say that I fully understand it. Please say more about what the programme is supposed to do and what it does. Also confirm that this is a C or C++ programme.

    I noticed that the code submitted does not have any writting to file coding. Was that intentional ?

    Wait to hear

    Stephanos

  5. #5
    Registered User
    Join Date
    Dec 2001
    Posts
    3
    c program
    write a file stucture that keeps reading student records(up to 30) and saves into student .dat. Each record has the following info
    char sLastName[30]
    char sId[6]---student id is 5 char string
    char sMark[3]----letter grade based on numeric mark
    int iMark-----numeric mark

    If you copy my code to a compiler you see how disjointed it is.
    Have to give this in tonite
    thanks for the help









    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>


    struct class
    {
    char sLastName[20];
    char sId[6];
    char sMark[3];
    int iMark[];
    };

    void EnterRecord(struct class*);

    int main(void)
    {


    FILE *fptr;
    char cinput, filename;
    int i;
    struct class student[30];
    int iIndex = {0}, iNumber = 0, iMark = {0};
    char cAnswer;
    char sName = {0}, sId ={0}, sMark = {0};

    printf("Enter a file name: ");
    scanf(" %c\n", &filename);

    if ((fptr = fopen("a:\\test\\textfile.txt", "w")) == NULL)
    {
    printf("Cannot open file\n");
    exit(0);
    }





    printf("Would you like to enter a student record?");
    scanf(" %c", &cAnswer);

    while (cAnswer=='y' || cAnswer=='Y')
    {

    printf("Enter student name, Id, mark: ");
    gets(student->sLastName, student->sId, student->iMark, student->sMark );

    sMark = EnterRecord( student, iMark[] , sMark[])

    printf("Student Name: %s, Id: %s, Mark: %i, Grade: %s\n", student->sLastName,
    student->sId, student->iMark, student->sMark);

    ++iIndex;
    printf("continue Processing?");
    scanf(" %c", cAnswer);
    }
    i = fclose(fptr);
    if (i=='cAnswer')
    {
    printf("File has been closed");
    }
    }



    /************************************************** ************************/

    EnterRecord( &student)
    { int iNumber, iMark, iIndex;
    char sMark;

    iNumber = iMark[iIndex] ;


    if (iNumber < 50)
    {
    sMark[iIndex] = "F"
    }

    if (iNumber >= 50 && iNumber <= 52)
    {
    sMark[iIndex] = "D-";
    }

    if (iNumber >= 53 && iNumber<= 56)
    {
    sMark[iIndex] = "D";
    }

    if (iNumber >= 57 && iNumber <= 59)
    {
    sMark[iIndex] = "D+";
    }

    if (iNumber >= 60 && iNumber <= 62)
    {
    sMark[iIndex] = "C-";
    }

    if (iNumber >= 63 && iNumber <= 66)
    {
    sMark[iIndex] = "C";
    }

    if (iNumber >= 67 && iNumber <= 69)
    {
    sMark[iIndex] = "C+";
    }

    if (iNumber >= 70 && iNumber <= 72)
    {
    sMark[iIndex] = "B-";
    }

    if (iNumber >= 73 && iNumber <= 76)
    {
    sMark[iIndex] = "B";
    }

    if (iNumber >= 77 && iNumber <= 79)
    {
    sMark[iIndex] = "B+";
    }

    if (iNumber >= 80 && iNumber <= 84)
    {
    sMark[iIndex] = "A-";
    }

    if (iNumber >= 85 && iNumber <= 89)
    {
    sMark[iIndex] = "A";
    }

    if (iNumber >= 90 && iNumber <= 100)
    {
    sMark[iIndex] = "A+";
    }
    return sMark;


    }

Popular pages Recent additions subscribe to a feed