datoteka i lista

datoteka i lista

offline
  • Pridružio: 08 Maj 2005
  • Poruke: 85

pozz, ovako imam jedan problem, postoji datoteka sa parametrima : IME PREZIME i posle toga negraniceno brojeva recimo IME PREZIME 1 2 4 6 4 7 9 , treba da IME PREZIME ucitam u listu i nadjem aritmeticku sredinu ovih brojeva i takodje njih ucitam u listu,,, recimo jedan element lsite bi bio
MILAN JANKOVIC 3.46
e sad prave mi problem ovi brojevi sto kaze da ih ima proizvoljno mnogo,,, kako najlakse da ih ocitam izbrojim i nadjem aritmeticku sredinu a potom ubacim u listu,,,

lakse bi mi bilo recimo da ih imam ograniceno,,,, onda prosto uradim najobicniju konverziju

while (!feof (ulaz))
{
fscanf (ulaz, "%s %s %d %d %d",ime,prezime, broj1,broj2,broj3);
dodavanje (lst,struktura);
}

izgled datoteke je sledeci
IME PREZIME 1 2 4 6 8 2(\n)
IME PREZIME 2 4 5 7 9(\n)

treba u listi da "izgleda": IME PREZIME 3.43



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

Ideja je sledeca:
nemoj da koristis
fscanf (ulaz, "%s %s %d %d %d",ime,prezime, broj1,broj2,broj3);
jer time imas samo tri broja, a kazes da imas ne znas koliko... uzmi ovako:
Ucitas sa jednim fscanf-om string za ime, i isto tako za prezime, onda uzmimas karakter po karakter sve dok ne dodjes do "\n" ili novog reda.

Kad uzmes karakter , propustis ga kroz funkciju isdigit nalazi se u ctype.h da vidis da li je broj. E, sad, posto uzimas jedan po jedan karakter ti moras da pravis od njih brojeve, tj. ako znas da u podacima imas nesto sto je vece od 9 onda moras da pravis brojeve. Ovako:
Ako imas
123 3
ti kad uzmes 1, smestis ga u promenljivu npr. "trenutniBroj"
onda ucitas 2, pa uradis sledece
trenutniBroj *=10; trenutnibBroj +=karakter;
Gde ti je "karakter" promenljiva u koju si ucitao trenutni karakter, i to radis sve dok ne dodjes do praznine. Kada dodjes do praznine dodas trenutni broj na ukupnu sumu i povecas broj brojeva za jedan ( treba ti da znas koliko si ih izbrojao zbog aritmeticke sredine ). Kad naidjes na novi red resetujes sve i krenes iz pocetka Smile



offline
  • Pridružio: 08 Maj 2005
  • Poruke: 85

hvala ti na odgovoru , svidja mi se resenje, ako sam razumeo ovo radi na foru ASCII koda ?

offline
  • Software developer
  • Pridružio: 06 Sep 2005
  • Poruke: 3800
  • Gde živiš: Beograd

ako pitas za funkciju isdigit, jedna implementacija bi bila
int isdigit (char c) {    if ((c>='0') && (c<='9')) return 1;    return 0; }
Samo proverava da li je broj izmedju 0 i 10 i to je to... uzima karakter po karakter, zato i moras da radis onu konverziju sa trenutni broj ( za slucaj da su brojevi dvocifreni ili trocifreni...)

offline
  • Pridružio: 08 Maj 2005
  • Poruke: 85

aaaha, jasno mi je, hvala puno na pomoci Very Happy Very Happy

offline
  • Pridružio: 27 Nov 2010
  • Poruke: 37

C++

#include <iostream> #include <fstream> using namespace std; int main() {     ifstream inputFile;     inputFile.open( "myTextFile.txt" );     string Ime;     string Prezime;     int iNumber = 0;     double Number;     double arSredina = 0;     inputFile >> Ime;     inputFile >> Prezime;         while( inputFile >> Number ) {         arSredina = arSredina + Number;         iNumber++;     }         arSredina = arSredina / iNumber;     cout << Ime << " " << Prezime << " " << arSredina << endl;     inputFile.close();     return 0; }

Ko je trenutno na forumu
 

Ukupno su 720 korisnika na forumu :: 44 registrovanih, 7 sakrivenih i 669 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: _Sale, A.R.Chafee.Jr., Areal84, Bane san, Bogoslov, BSD, caesar, DENIRO, dolinalima, Dorcolac, Dovla, HDMI, HrcAk47, jaeger, komkom, leptirleptir, Lucije Kvint, magna86, Marko Marković, MB120mm, Mercury, mikrimaus, Mikulino, Milan A. Nikolic, Milos ZA, misa1xx, moonshine, ObelixSRB, pein, Pohovani_00, raketaš, repac, sabros, Stoorbak, t84dar, The Joker, Toni, vasa.93, vlvl, voja64, yrraf, zixmix, Živković, 223223