Sveiki, uždavinys skamba taip - Duomenų faile „pažymiai.txt“ surašyti Onutės pirmojo pusmečio pažymiai. Pirmoje eilutėje parašytas skaičius, reiškiantis dalykų, iš kurių Onutė gavo bent vieną pažymį, skaičių. Kitose eilutėse dalyko pavadinimas (10 pozicijų) ir gauti pažymiai. Parašykite programą, kuri suskaičiuoja kiekvieno dalyko pažymių vidurkius ir pusmečio pažymius. Rezultatą įrašykite į failą „rez.txt“ pusmečio pažymio mažėjimo tvarka.
Paradiniai duomenys: 3 Lietuviu k 10 8 Matematika 7 6 6 Istorija 10 9 4 10
Visą uždavinio sąlygą suprantu ir numanau kaip reikia daryti uždavinį ,tačiau nesigauna perskaityti pažymių, gal turit patarimų?
Čia mano kodas kurį esu pasirašęs: #include <iostream> #include <fstream> #include <cmath> #include <iomanip> #include <cstring> #include <string>
using namespace std;
struct dalykas { string dalykas; int pazymys; };
void skaityk (dalykas a[], int &n);
int main() { int n; dalykas a[99]; skaityk(a,n); for (int i=0; i<n; i++) { cout <<a[i].dalykas<<" "<<a[i].pazymys<<endl; } return 0; }
void skaityk (dalykas a[], int &n) { char dalykopav [99]; ifstream in ("duom.txt"); in >> n; for (int i=0; i<n; i++) { in.ignore(80,'\n'); in.get(dalykopav,11); a[i].dalykas=dalykopav; in >> a[i].pazymys; } in.close(); }
pakeista prieš 4 m
mariuspure (+9)
Blogai yra tavo programoje su in.ignore, taip pat blogai skaitai skaicius: ju nera vienas ir ju numeracija nera i;
Ju yra nezinomas skaicius.
Skaiciu nuskaitymas turetu buti su dar vienu ciklu(ciklas cikle), reikia tikriausiai skaityti iki eilute pabaigos.
Su ignore turetu buti taip:
in >> n; in.ignore(); // ignoruoja po n ty. po '3'
for (int i = 0; i < n; i++) { in.get(dalykopav, 11); a[i].dalykas = dalykopav;
// kad veiktu cia reikia skaiciu nuskaitymo...
in.ignore(); //ignoruoja nuo eilutes pabaigos, jau po nuskaitymu... }
pakeista prieš 4 m
Karolis921 (+68)
Pakeičiau in.ignore(); vietas ,tačiau vis vien nesigauna perskaityti pažymių iki eilutės pabaigos, ieškojau pagalbos internete .tačiau nerandu ko man reikia. Suprantu ,kad reikia skaityti su while ,nes nežinau kiek pažymių yra ,tačiau nesigauna perskaityti visos eilutes.