[ 01011011 @ 08.04.2002. 10:45 ] @
Ovako,
ne bih vas zamarao, ali stvarno mi je potrebna pomoc sto pre to bolje, jer moram da predam ovu labaratoriju u Utorak. imam nkoliko pitanjca na koje bih molioda dobijem neke socne odgovore ukoliko je moguce ili neki deo koda...problem ide ovako


CIS166
Lab 9 - 10 points
Class Grades Statistics
Due:4/9/2002 4pm

Purpose: To become more familiar with the use of one-dimensional arrays. Submit your program appropriately with a flowchart of your logic.

Problem: This program will read in the scores for at most 20 students ( scores range from 0-100 ), and determine the average score and assign a letter grade accordingly ( 100-90 = A, 89-80=B, etc.). The program will use a one-dimensional array studentScores[20] to store the scores, a function getScores( ) that will read the scores into the array and also return the number of students entered. It will use a sentinel-controlled loop to read in the array until 20 students are entered or -1 is entered for a score. There will also be a value-returning function calculateAverage( ) that will calculate the average score for the class. A character returning function determineGrade( ) will use a switch structure to convert a numeric score to a letter grade. Finally, a void function printResults( ) will print the list of scores in a row in the format { 90, 76, 34, 89, etc. }, the average score with a description and the average letter grade.

Save your solution as Lab9.cpp.


Output Result: The following is an example of the output:



Yourname - CIS166 - Lab 9

Please enter up to 20 students' scores or -1 to end.

90 80 70 60 -1

The scores you entered were:
{ 90, 80, 70, 60 }

The average score was 75.0 which is a grade of C.

End of program.


Interesuje me:


Kako da napravim da samo 20 brojeva moze da unese?

I kako da stvorim ovaj output

The scores you entered were:
{ 90, 80, 70, 60 }


E sad ovo je praksa da bi se naucile arrays ili nizovi, tako da moram njih dakoristim. NE kogu da koristim klase.

Moslio bih da mi neko pomogne, a evo ja sad trenutno zapocinjem da pisem code, pa cu ga postaviti ovde kad nesto uradim.

Hvala unapred.

[ Predrag Damnjanovic @ 08.04.2002. 11:27 ] @
Citat:
Kako da napravim da samo 20 brojeva moze da unese?

Ahm...
Nemoj da shvatis ovo kao uvredu, ali mislim da bi i mom bratu, koji je 7. razred i uci BASIC, prvo sto bi mu palo na pamet je FOR.
Dakle, matematicaru, ovako:
Code:

int i=0;
for (i=0; i<20; i++) 
{
..
}


Drugo, algoritam za sortiranje ide tako sto uzmes neki veliki broj (recimo 101), pa onda u nizu trazis sve manji i manji broj, i redom ih upisujes u novi niz.
[ shaDy @ 08.04.2002. 11:54 ] @
Funkcija za output:

Code:


void printresult(int n, int *a)
 {  printf("{ ");  
    for(;n--;) printf("%d ,*a++);
    printf(" }\n");
    printf("the Avarage score was %d which is grade %c.",calculateAverage(XXX),determineGrade(XXX )); 
 }


n ti je broj elemenata u nizu, a ti je niz.
XXX zameni argumentima koje si koristio.
[ 01011011 @ 08.04.2002. 22:43 ] @
Hvala ovo je bilo od velike pomoci.
[ shaDy @ 09.04.2002. 00:32 ] @
Np,

Jesi si se ti svojevremeno prestavljao kao NikoLA5 (mig29&f16) ili sam pobrkao loncice. ;)
[ 01011011 @ 09.04.2002. 10:11 ] @
Taj sam brate...Igrao sam za 4C Na kraju sam se zvao Oxygen, dok se nisu 4c raspali.
[ Predrag Damnjanovic @ 09.04.2002. 11:23 ] @
0101, interesuje me nesto.
Kako je moguce da vas uce nizove a da prethodno niste savladali najobicniju petlju, pa ne znate kako da neki blok u programu izvrsite n puta?
Ne kapiram, ispada da vas toliko dobro uce da dozvole da zaboravite osnove programiranja?
[ 01011011 @ 09.04.2002. 20:43 ] @
Ne kontam sta si sa ovim hteo reci...????
a ja ne kontam kako ti radis 3D programiranje a ne znas da napravis floating point number. ???
[ Predrag Damnjanovic @ 09.04.2002. 21:29 ] @
Prosto, do sada nisam imao potrebe nista da delim od jedan, pa mi promakla lekcija u kome se objasnjava sta znaci ono f na kraju broja.
Ali ovo za petlju mi stvarno nije jasno, otisli ste na nizove a niste naucili osnovu programiranja (cak nema ni veze sa C-om).
[ 01011011 @ 09.04.2002. 21:41 ] @
Care,

ja sam napisao to da bi mi neko pomogao da brze uradim jer treba da to uradim do danas za labaratoriju da ne izgubim poene. a NIJE zato sto ne znal looping itd.
Inace ovako ide gradivo ako te bas interesuje.

CIN. COUT (lol)

int, float, double, itd....

loops, (nested it.)
cases (switch statements)
funkcije
arrays
pointers
to je C++ 166
ONDA C++ 266
Ostatak.
Clase itd
[ Predrag Damnjanovic @ 09.04.2002. 22:10 ] @
Citat:
01011011:
Kako da napravim da samo 20 brojeva moze da unese?

Onda se ne blamiraj bez potrebe ovakvim pitanjima.
[ 01011011 @ 09.04.2002. 23:22 ] @
Ne blamiram se nego me interesuje, jer nisam dobar sa arrays, kao sto vidis labaratorija je sa arrays, mislio sam da je to povezano :)

A ovo sto si ti napisao je pomoc ali ne ono sto sam trazio jer je trazeno sa arrays, i treba da izgelda nesto ovako...
PS Mozda ima gresaka ali to je zbog toga sto nemam ovde kompajler. :)

Code:


void readvalidArray ( int array[], int size, int& index)
{
int hold;

Cout <<" UPISI VASE BROJEVE : " << endl;
cin >> hold;

while ((hold != -1)&&(index < size))
{
arrayIn[index] = hold;
index++;
if (index < size)
cin >> hold;
}
}

dakle malko je slozenije nego jednostavna for loop
:)
[ 01011011 @ 10.04.2002. 11:00 ] @
E sada mi treba pomoc kad smo vec kod ovoga...

Code:

void getScores(/*out*/ int scores[], /*in*/int number)
{
    int n;
    while ((n != -1) && (number < 100))
    {
        scores[number] = n;

        number++;
        cout << "Please enter up to 20 students' scores or -1 to end. "<<endl<<endl;

        if (number < 100 )
            cin >> n;
    }
}



Evo sta je problem, ovaj code ako upisem 10 brojeva samo ispise 10 puta ovaj COUT statement
PLease enter .... ne kontam zasto. Treba mi hitno pomoc sa ovom GetScores() funkcijom. Sta bi trebala da radi.

getScores funkcija treba da odrasi sledece.
kad neko upisuje ocjene da ih cita i ucita u Array(NIZ) i da takodje vrati broj studenata koji su ukucani, jer ce mi to trebati za nesto drugo da izracunam prosjek. Ovo mi nije jasno. Covjek nam je na casu danas objasnjavao malkice ovako na nekim primerima i on kaze da ide Void funkcija??? a kako onda da povrati(return ) nesto??? NE kontam, a sutra mi je zadnji dan da ovo uradim, pomagajte\, ukoliko ne zavrsim mogu da izbacim cas, i to ce mi biti smrt.
[ 01011011 @ 10.04.2002. 23:24 ] @
Pomagajte ljudi da uradim ovja getScores funkciju...potreno hitno...
[ 01011011 @ 11.04.2002. 02:23 ] @
Evo vec 5 sati razmisljam i nikako da skontam kako ovo da odradim, da lii ima iko ko moze pomoci????

evo dela coda koji sma uradio, samo sto ne radi...

Code:

#include <iostream>
using namespace std;

void getScores( int studentScores[], int numberofstudents, int number);
float calculateAverage(const int studentScores[]);
char determineGrade(const int studentScores[]);
void printResults(const int studentScores[], int);

int main()
{    
    const int MAX_GRADES = 20;
    int getGrades[MAX_GRADES];
    int number;

    

    cout <<" Nikola Ivetich - CIS166 - Lab9 " << endl;
    cout <<"Please enter the Number: " <<endl;
    cin >> number;

    while ( (number != -1) && (number < 100) && (number > 0))
    {
        getScores(getGrades, MAX_GRADES, number);
//        printResults(getGrades, MAX_GRADES);
    }
        
    //1    printResults(studentScores);

    return 0;
}
/*********************************************************************************************/
void getScores(/*out*/ int studentScores[],int numberStudents, /*in*/int number)
{
    int some;

    while ((some!=-1) && ( some < number))
    {
        studentScores[some];

        number++;

        if ( number < numberStudents)
        {
            cout <<"Please Enter the values: "<<endl;
            cin >> some;
        }
    }
}
/*
float calculateAverage(const int studentScores[], int size, int numbers)
{
}
void printResutlts(const int studentScores[], int size, int numbers)
{
}
char determineGrade(int score)
{
    char grade;
    int tens;

    tens = score / 10;
    switch (tens)
    {
    case 10:
    case 9:
        grade = 'A';
        break;
    case 8:
        grade ='B';
        break;
    case 7:
        grade ='C';
        break;
    case 6:
        grade ='D';
        break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:
        grade ='F';
        break;
    default:
        grade ='?';
        break;
    }
    return grade;
}
*/



A i leka odgovori na 15 pitanja a mene izaostavi...hehe
[ shaDy @ 11.04.2002. 02:51 ] @
evo ti ova za upis u c-u. vidi mozda se moze optimizovati.

Code:

 int getscores(int *a)
 { int n=0,p=1;
   printf("unesi ocene ucenika: ");
   do{
    if(n<20)scanf("%d",&a[n]);
    if(p=(a[n]!=-1)&&(n<20)) ++n;
   }while(p);
   return n;
 }

[ shaDy @ 11.04.2002. 03:06 ] @
evo ceo program u c-u ,radi provereno !!!

Code:

#include <stdio.h>

int getscores(int *a)
 { int n=0,p=1;
   printf("unesi ocene ucenika: ");
   do{
    if(n<20)scanf("%d",&a[n]);
    if(p=(a[n]!=-1)&&(n<20)) ++n;
   }while(p);
   return n;
 }



Code:

float avarage(int n,int *a)
 { int i;float suma=0;
   for(i=0;i<n;i++) suma+=a[i];
   return suma/n;
 }



Code:

char grade(int n,int *a)
 { int pom=avarage(n,a);
   switch(pom/10)
    {case 10: case 9: return 'A';break;
     case 8: return'B';break;
     case 7: return'C';break;
     case 6: return 'D';break;
     /* i tako dalje */
    }
 }



Code:


void printscore(int n,int *a)
 { printf("The scores you entered were:\n{ ");
   for(int i=0;i<n;i++) printf("%d ",a[i]);
   printf("}\nTheavarage score was %.1f which is grade %c .",avarage(n,a),grade(n,a));
}




Code:


main()
 { int a[10],n;
   n=getscores(a);
   printscore(n,a);

 }




PS: |code| nesto brljavi pa sam stavio ovako
[ 01011011 @ 11.04.2002. 03:13 ] @
Hvala SHAdy, moram da jos to pokrenem da vidim kako kod mene radi, Potreban mi je C++ CODE, a ovo je malkice razlicitije. U svakom slucaju hvala, ako ima neko da moze da pomogne uc++ ZAHVALIO BI SE
tREBA MI SAMO GETsCORE FUNKCIJA.
[ shaDy @ 11.04.2002. 03:18 ] @
Skapiro sam sta brljavi.

Tamo gde treba da stoji clan a[*i] on pretvara sve iza u italic zati sti je [*i] za italic.
ti vidi pa dopuni.

Predlazem gojku ako cita ovo, da iz CODE dela izbaci ako je moguce ono za italic i bold i sta znam sta jos ima ( [*i] ,[*b] ).

PS : * je samo tu da ne bi ponovo italikovo slova ;) u ***ote umori se
[ 01011011 @ 11.04.2002. 07:47 ] @
Ma nije mi to frka...Skontao saj ja sve u C-iju, ali ne mogu da skapiram u C++ NIKAKO...pokusavam vec satima ocajnicki, nisam ni spavao, a imam jos 16 sati dokle moram da predam ovo, ako ne predam ne mogu preci ovaj cas, bas sam popizdio. Nema spavanja. Ukoliko nekom nije tesko, najtezi deo mi je getScore()funkcija. Kkoa da nju napisem????
[ 01011011 @ 11.04.2002. 11:02 ] @
Evo dosadio sam i bogu i narodu, ali nije jos uvek kasno, vec oko 12 sati se mucim da bih skontao arrays, vidim da mi nije niko osim Shady puno ni pomogao ali moj code radi, samo sto imam nekoliko gresaka koje su sitne, ali su rupe u programu i ne bih zeleo da na njih moj profesor naleti.

Prvo, Labaratorija je ovde

http://www.ludakuca.com/Lab09.html

e sada ako pogeldate tamo output code treba da izgleda ovako nekako
{ neki brojevi odvojeni zarezom }
i naravno na kraju nema tacke. To nisam uspio da odradim. Nisam znao kako da stavim te zagradice i da brojeve odvojim zarezom a da na kraju na zadnjem broju nema zareza.

Druga stvar je da ovaj sentinel sa -1 radi, ali ukoliko se ukuca on prvi onda izbaci neki bogus, tako da mi za to trbea pomoc. A evo i koda.

Code:

// Nikola Ivetich
// CIS 166
// Lab 9
//***************************************************
//*                                                    *
//*        Student Scores, and average!!!                *
//*                                                    *
//***************************************************
//

#include <iostream>
#include <iomanip>

using namespace std;

void getScores(float studentScores[]);
float calculateAverage(float studentScores[] );
char determineGrade(float avg);
void printResults(float studentScores[], float avg,char letter );

int main()
{
    float studentScores[20];
    double avg;
    char letter;

    cout <<"Nikola Ivetich - CIS 166 - Lab 9 " << endl<<endl;
    
    getScores(studentScores);    
    avg=calculateAverage(studentScores);
    letter=determineGrade(avg);
    printResults(studentScores,avg,letter );
    
    cout << determineGrade(avg);
    cout <<"."<<endl<< endl;
    cout <<"End Of Program. "<<endl<<endl;
    return 0;
}

void getScores(float studentScores[])
{
    int counts;
    int grade;

    counts=0;
    cout << "Please enter up to 20 students' scores or -1 to end." << endl;
    while((grade!=-1) && (counts<=19))
    {
        
        cin >> grade;
        studentScores[counts++]=grade;
        cout << " ";
            
    }
}

float calculateAverage(float studentScores[])
{
    float avg;
    int counts;

    avg=0;
    counts=0;
    
    while((counts<=19) && (studentScores[counts]!=-1))
        avg+=studentScores[counts++];

    avg=avg/(counts);

    return avg;
}


char determineGrade(float avg)
{
    char letter;
    int tens;

    tens = avg / 10;

    switch (tens)
    {
    case 10:
    case 9:
        letter = 'A';
        break;
    case 8:
        letter ='B';
        break;
    case 7:
        letter ='C';
        break;
    case 6:
        letter ='D';
        break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:
        letter ='F';
        break;
    default:
        letter ='?';
        break;
    }

    return letter;    
}

void printResults(float studentScores[], float avg, char letter )
{
    
    int counts;

    
    counts=0;
    cout << "The scores you entered were:" << endl;
    while((counts<=19) && (studentScores[counts]!=-1))
         if(studentScores[counts]!=1)
            cout << studentScores[counts++] << " ";
        
    cout << endl
          << "The average score was "<<setprecision(1)<<showpoint<<fixed << avg << " which is a grade of ";





Vjerujte mi nisam ustao sa kompijutera skoro celi dan, mucim se sa ovim, poneki ce reci da je ovo bas lako, ali ja nikako da skontam pravo arrays.
[ shaDy @ 11.04.2002. 11:37 ] @
evo par primedbi na tvoj kod.
NIkad nisam pisao u C++-u, izvinjavam se ako lupim neku glupost


u getscores inicijalizuj promenjivu grade posto u while ispitujes njenu vrednost.
ako nije inicijalizovana imace neku proizvoljnu vrednosti sto moze biti i -1 i tako ce izaci iz petlje.

2. u calculateavarage stavio si da je avg=avg/counts , moras do deliti sa counts-1 posto ti counts broji i onaj -1 sto nije ocena

3.u print funkciji imas ovo if(studentScores[counts]!=1), stavi -1, to se prevideo,mada ovo if nije ni potrebno kad se vec u whileu proverava

4. ne kapiram zasto si ispisivao grade u mainu, kad si mogao da stavis i u print funkciji kao avg

ovo je nesto sto sam mogao da uocim na brzaka sto ne mora da znaci da je i tacno, posalji mi sta ti tacno radi program i koje rezultate izbacuje i kako ih izbacuje.
[ shaDy @ 11.04.2002. 12:04 ] @
opet ja:


evo kako mozes lako da resis problem sa zarezima.
pre while u print finkciji deklarises neko p i kazes mu da je 0.
u while pre ispisa broja stavi If(p) cout << ", ";
i onda kazes da ti je p=1 i on ce ispisivati zareze pre svih samo ne pre prvog i to je to.

a za zagradice ne kontam u cemu je problem. pre while stavis zagradicu i razmak al ne kazes da prelazi u sledeci red. onda ispises brojeve ko sto sam ti reko i na kraju posle while kazes cout <<" }" <<endl; ili kako se vec kaze

i ne kapiram sta ce ti ono cout << " "; u getscore funkciji
[ 01011011 @ 11.04.2002. 20:35 ] @
Hvala shady sto se i trudis da bi mi pomogao, neke stvari mozda nisi skontao sto sam tako napisao, ali napisao sam, jedino sto " u calculateavarage stavio si da je avg=avg/counts , moras do deliti sa counts-1 posto ti counts broji i onaj -1 sto nije ocena "

to sam proimetio i promenuo, sada bar imam skoro celi program. :)