Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Datoteke (zadatak)
WWW:
Idite na 1, 2  Sljedeće
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 1:48 ned, 21. 6. 2009    Naslov: Datoteke Citirajte i odgovorite

Zadatak 8.7. Napiˇsite funkciju koja kao jedini argument prima
file-pointer koji pokazuje na datoteku otvorenu za ˇcitanje, te iz nje ˇcita
kvadratnu matricu realnih brojeva i vra´ca najve´cu sumu stupca u ma-
trici. Matrica je zapisana kao u zadatku 8.2.

Rjeˇsenje. Matrica je zapisana po recima, pa za ˇcitanje po stup-
cima treba alocirati niz u kojem ´cemo ˇcuvati sume svih stupaca.

jel se može rješit bez da alociram taj niz... :?: ja sam alocirala cijelu matricu i onda normalno računala sume stupaca. i program mi radi!
Zadatak 8.7. Napiˇsite funkciju koja kao jedini argument prima
file-pointer koji pokazuje na datoteku otvorenu za ˇcitanje, te iz nje ˇcita
kvadratnu matricu realnih brojeva i vra´ca najve´cu sumu stupca u ma-
trici. Matrica je zapisana kao u zadatku 8.2.

Rjeˇsenje. Matrica je zapisana po recima, pa za ˇcitanje po stup-
cima treba alocirati niz u kojem ´cemo ˇcuvati sume svih stupaca.

jel se može rješit bez da alociram taj niz... Question ja sam alocirala cijelu matricu i onda normalno računala sume stupaca. i program mi radi!


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 3:20 ned, 21. 6. 2009    Naslov: Citirajte i odgovorite

Pa, moze, ali to je puno previse nepotrebno alocirane memorije. :)

Recimo, tvoj program bi za kvadratnu matricu realnih brojeva reda 1.000.000 potrosio oko 8TB memorije; rjesenje s obicnim nizom trosi cca 8MB. 8) Plus, ima manje koda sto znaci i manje mjesta za profulati. ;)

No, mislim da sam na vjezbama radio upravo s alokacijom matrice, jer mi se cini da studenti to lakse prihvacaju. :blista:
Pa, moze, ali to je puno previse nepotrebno alocirane memorije. Smile

Recimo, tvoj program bi za kvadratnu matricu realnih brojeva reda 1.000.000 potrosio oko 8TB memorije; rjesenje s obicnim nizom trosi cca 8MB. Cool Plus, ima manje koda sto znaci i manje mjesta za profulati. Wink

No, mislim da sam na vjezbama radio upravo s alokacijom matrice, jer mi se cini da studenti to lakse prihvacaju. Reklamiram neku zubnu pastu



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
moi
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 02. 2007. (13:39:09)
Postovi: (26)16
Spol: žensko
Sarma = la pohva - posuda
= 2 - 1

PostPostano: 22:53 ned, 21. 6. 2009    Naslov: Citirajte i odgovorite

Kako bi se iz datoteke učitavali podaci Ana Pero 100
Pero Ante 150

Da li trebamo definirati novi tip podatka za to (pomoću typedefa) i učitavati ih preko one CSV fore, samo što će nama separator biti razmak?
Ili ih treba učitati u matricu pa onda probati nekako ići po njoj? Stvarno ne znam kako bi to rješila.
Kako bi se iz datoteke učitavali podaci Ana Pero 100
Pero Ante 150

Da li trebamo definirati novi tip podatka za to (pomoću typedefa) i učitavati ih preko one CSV fore, samo što će nama separator biti razmak?
Ili ih treba učitati u matricu pa onda probati nekako ići po njoj? Stvarno ne znam kako bi to rješila.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 23:26 ned, 21. 6. 2009    Naslov: Citirajte i odgovorite

[quote="moi"]
Ana Pero 100
Pero Ante 150
[/quote]

fscanf (dat, "%s %s %d", ime1,ime2,&broj);

gdje je dat pointer na ulaznu datoteku, ime1 i ime2 dovoljno veliki char[], a broj integer.

ako ima više linija koje imaju ista učitavanja onda:

[code:1]
while ( fscanf (dat, "%s %s %d", ime1,ime2,&broj)==3 )
{
....
}
[/code:1]
moi (napisa):

Ana Pero 100
Pero Ante 150


fscanf (dat, "%s %s %d", ime1,ime2,&broj);

gdje je dat pointer na ulaznu datoteku, ime1 i ime2 dovoljno veliki char[], a broj integer.

ako ima više linija koje imaju ista učitavanja onda:

Kod:

while ( fscanf (dat, "%s %s %d", ime1,ime2,&broj)==3  )
{
....
}



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
moi
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 21. 02. 2007. (13:39:09)
Postovi: (26)16
Spol: žensko
Sarma = la pohva - posuda
= 2 - 1

PostPostano: 23:34 ned, 21. 6. 2009    Naslov: Citirajte i odgovorite

Hval :D
Hval Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 0:29 pon, 22. 6. 2009    Naslov: Citirajte i odgovorite

[code:1]
/*
Zadatak 8.12. Napiˇsite funkciju koja kao argumente uzima ime datoteke, te realne parametre a, b i d > 0.
Neka je m := min{a, b} i M := max{a, b}.
Funkcija treba u datoteku zapisati tablicu s dva
stupca: u prvom stupcu trebaju biti sve vrijednosti
x E {m + k * d <= M : k E N0} u uzlaznom poretku,
a u drugom stupcu trebaju biti odgovaraju´ce vrijednosti funkcije
f(x) := sin x / (cos x + log x).
Izlazna datoteka treba biti u CSV formatu, s toˇcka-zarezima kao separatorima.
Odgovaraju´ce matematiˇcke funkcije nalaze se u biblioteci math.
*/
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

double max(double x, double y){
if(x>y) return x;
else return y;
}

double min(double x, double y){
if(x<y) return x;
else return y;
}

void funkcija(FILE *out, double a, double b, double d){
double m, M, x, y, *polje=NULL;
int i, j, k=0, br=0;
m=min(a, b);
M=max(a, b);

while(1){
if(m+k*d >M) break;
polje=(double*)realloc(polje, br++ * sizeof(double));
polje[br-1]=m+k*d;
k++;
}

for(i=0; i<br-1; i++)
for( j=i+1; j<br; j++)
if( polje[i]>polje[j]){
double temp=polje[i];
polje[i]=polje[j];
polje[j]=temp;
}

for(i=0; i<br; i++){
x=polje[i];
y=(sin(x))/( cos(x) + log(x) );
fprintf( out, "%g; %g\n", x, y );
}
}

int main(){
FILE *out;
out=fopen("8.12.txt", "wt");
if(out==NULL){
printf("Greska pri otvaranju datoteke!\n");
exit(1);
}
funkcija(out, 1, 3, 2);

fclose(out);
scanf("%%");
return 0;
}
[/code:1]

uredno mi ispisuje x-eve u prvom stupcu ali ne dobivam odgovarajuće brojeve za f(x) u drugom stupcu... :?
jel možda problem u ovim fjama sin(x), cos(x), log(x)? u c-u se isto tak pišu, jel? barem tako piše na službenom šalabahteru :roll:
Kod:

/*
Zadatak 8.12. Napiˇsite funkciju koja kao argumente uzima ime datoteke, te realne parametre a, b i d > 0.
Neka je m := min{a, b} i M := max{a, b}.
Funkcija treba u datoteku zapisati tablicu s dva
stupca: u prvom stupcu trebaju biti sve vrijednosti
x E {m + k * d <= M : k E N0} u uzlaznom poretku,
a u drugom stupcu trebaju biti odgovaraju´ce vrijednosti funkcije
f(x) := sin x / (cos x + log x).
Izlazna datoteka treba biti u CSV formatu, s toˇcka-zarezima kao separatorima.
Odgovaraju´ce matematiˇcke funkcije nalaze se u biblioteci math.
*/
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

double max(double x, double y){
            if(x>y) return x;
            else return y;
            }
         
double min(double x, double y){
            if(x<y) return x;
            else return y;
            }           
           
void funkcija(FILE *out, double a, double b, double d){
     double m, M, x, y, *polje=NULL;
     int i, j, k=0, br=0;
     m=min(a, b);
     M=max(a, b);
     
     while(1){
                if(m+k*d >M) break;
                polje=(double*)realloc(polje, br++ * sizeof(double));
                polje[br-1]=m+k*d;
                k++;
                 }
                 
     for(i=0; i<br-1; i++)
        for( j=i+1; j<br; j++)
           if( polje[i]>polje[j]){
               double temp=polje[i];
               polje[i]=polje[j];
               polje[j]=temp;
               }
               
     for(i=0; i<br; i++){
           x=polje[i];
           y=(sin(x))/( cos(x) + log(x) );   
           fprintf( out, "%g; %g\n", x, y );
           }         
     }
     
int main(){
    FILE *out;
    out=fopen("8.12.txt", "wt");
    if(out==NULL){
                printf("Greska pri otvaranju datoteke!\n");
                exit(1);
                }
    funkcija(out, 1, 3, 2);
   
    fclose(out);
    scanf("%%");
    return 0;
}               


uredno mi ispisuje x-eve u prvom stupcu ali ne dobivam odgovarajuće brojeve za f(x) u drugom stupcu... Confused
jel možda problem u ovim fjama sin(x), cos(x), log(x)? u c-u se isto tak pišu, jel? barem tako piše na službenom šalabahteru Rolling Eyes


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 1:47 pon, 22. 6. 2009    Naslov: Citirajte i odgovorite

Meni ispise
[code:1]1; 1.55741
3; 1.29921[/code:1]
i onda padne s porukom "[tt]Segmentation fault[/tt]", sto ce reci da negdje nesto krivo brljas s memorijom. :?

Sto ce ti dinamicka alokacija u ovakvom zadatku?!? :shock: Da sortiras brojeve za koje vec znas da su u rastucem poretku (jer je d > 0)? :joooj:

Usput, ta alokacija je kriva; treba ici [tt]++br[/tt], a ne [tt]br++[/tt]. :| Plus, fali oslobadjanje memorije. :?

Preporuka: ne kompliciraj si zivot; napisi to bez dinamicke alokacije. :) Slicni zadaci su se radili u prvom semestru, pod petljama (dakle cak prije "obicnih" nizova!), samo bez pisanja u datoteku. 8)

P.S. Ako je separator tocka zarez, onda stavljas nju, bez dodatnih razmaka. :) Dakle
[tt]fprintf(out, "%g;%g\n", x, y);[/tt]
a ne
[strike][tt]fprintf(out, "%g;[bg=#ffa0a0] [/bg]%g\n", x, y);[/tt][/strike]
8)
Meni ispise
Kod:
1; 1.55741
3; 1.29921

i onda padne s porukom "Segmentation fault", sto ce reci da negdje nesto krivo brljas s memorijom. Confused

Sto ce ti dinamicka alokacija u ovakvom zadatku?!? Shocked Da sortiras brojeve za koje vec znas da su u rastucem poretku (jer je d > 0)? Joj, joj, joj,... JOOOJ!

Usput, ta alokacija je kriva; treba ici ++br, a ne br++. Neutral Plus, fali oslobadjanje memorije. Confused

Preporuka: ne kompliciraj si zivot; napisi to bez dinamicke alokacije. Smile Slicni zadaci su se radili u prvom semestru, pod petljama (dakle cak prije "obicnih" nizova!), samo bez pisanja u datoteku. Cool

P.S. Ako je separator tocka zarez, onda stavljas nju, bez dodatnih razmaka. Smile Dakle
fprintf(out, "%g;%g\n", x, y);
a ne
fprintf(out, "%g; %g\n", x, y);
Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 2:10 pon, 22. 6. 2009    Naslov: Citirajte i odgovorite

evo ispravila sam ali opet ne ispisuje dobre vrijednostu...
[code:1]
void funkcija(FILE *out, double a, double b, double d){
int k=0;
double m, M, x;
m=min(a, b);
M=max(a, b);

while(1){
if(m+k*d >M) break;
x=m+k*d;
k++;
fprintf( out, "%g;%g\n", x, (sin(x))/( cos(x) + log(x) ) );
}

}
[/code:1]
evo ispravila sam ali opet ne ispisuje dobre vrijednostu...
Kod:

void funkcija(FILE *out, double a, double b, double d){
     int  k=0;
     double m, M, x;
     m=min(a, b);
     M=max(a, b);
     
     while(1){
                if(m+k*d >M) break;
                x=m+k*d;
                k++;
                fprintf( out, "%g;%g\n", x, (sin(x))/( cos(x) + log(x) )  );
                 }
                 
                 }


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 2:34 pon, 22. 6. 2009    Naslov: Citirajte i odgovorite

[code:1][vsego@petko tmp]$ gcc -lm t.c && ./a.out && cat 8.12.txt
1;1.55741
3;1.29921
[vsego@petko tmp]$ perl -e 'foreach(1,3){print $_,";",sin($_)/(cos($_)+log($_)),"\n";}'
1;1.5574077246549
3;1.29921081023573[/code:1]

Meni izgleda tocno. :) U cemu je problem? :grebgreb: Mozda si zaboravila da trigonometrijske funkcije rade s radijanima? :D

Usput:
[code:1] if(m+k*d >M) break;
x=m+k*d;
k++;[/code:1]
:arrow:
[code:1] x = m + k*d;
if (x > M) break;
k++;[/code:1]
ili, bolje,
[code:1] x += d;
if (x > M) break;[/code:1]
(uz inicijalizaciju [tt]x = m[/tt] prije petlje). 8)
Kod:
[vsego@petko tmp]$ gcc -lm t.c && ./a.out && cat 8.12.txt
1;1.55741
3;1.29921
[vsego@petko tmp]$ perl -e 'foreach(1,3){print $_,";",sin($_)/(cos($_)+log($_)),"\n";}'
1;1.5574077246549
3;1.29921081023573


Meni izgleda tocno. Smile U cemu je problem? Kotacici rade 100 na sat Mozda si zaboravila da trigonometrijske funkcije rade s radijanima? Very Happy

Usput:
Kod:
                if(m+k*d >M) break;
                x=m+k*d;
                k++;

Arrow
Kod:
                x = m + k*d;
                if (x > M) break;
                k++;

ili, bolje,
Kod:
                x += d;
                if (x > M) break;

(uz inicijalizaciju x = m prije petlje). Cool



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
lucika
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 22. 11. 2007. (17:52:27)
Postovi: (12F)16
Spol: žensko
Sarma = la pohva - posuda
24 = 34 - 10

PostPostano: 2:46 pon, 22. 6. 2009    Naslov: Citirajte i odgovorite

f(x)= sin(x) / ( cos(x) + log(x) )
kad računam preko kalkulatora ispada mi f(1)=0,017455064, a f(3)=0,035463952... pa nije valjda da mi kalkulator ne valja! :zbunjen:
f(x)= sin(x) / ( cos(x) + log(x) )
kad računam preko kalkulatora ispada mi f(1)=0,017455064, a f(3)=0,035463952... pa nije valjda da mi kalkulator ne valja! Zbunjen


[Vrh]
Korisnički profil Pošaljite privatnu poruku
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 3:06 pon, 22. 6. 2009    Naslov: Citirajte i odgovorite

Sto znaci da na kalkulatoru uvrstavas 1 (odnosno 3) [strike]stupnja[/strike], a ne 1 (odnosno 3) [b]radijana[/b]; evo, kad PERL-u kazem da to isto racuna za stupnjeve:
[code:1][vsego@petko tmp]$ perl -e 'foreach(1,3){$f=atan2(1,0)/90;print $_,";",sin($f*$_)/(cos($f*$_) + log($_)),"\n";}'
1;0.0174550649282176
3;0.0249546598100604[/code:1]
No, u matematici (kao i u C-u, PERL-u,...) racuna se s radijanima. :tso: "Stupanj" znaci [latex]\pi / 180[/latex], nista drugo. 8) Zaboravi stupnjeve cim prije... bit ce ti lakse. ;)
Sto znaci da na kalkulatoru uvrstavas 1 (odnosno 3) stupnja, a ne 1 (odnosno 3) radijana; evo, kad PERL-u kazem da to isto racuna za stupnjeve:
Kod:
[vsego@petko tmp]$ perl -e 'foreach(1,3){$f=atan2(1,0)/90;print $_,";",sin($f*$_)/(cos($f*$_) + log($_)),"\n";}'
1;0.0174550649282176
3;0.0249546598100604

No, u matematici (kao i u C-u, PERL-u,...) racuna se s radijanima. Trudim Se Objasniti... "Stupanj" znaci , nista drugo. Cool Zaboravi stupnjeve cim prije... bit ce ti lakse. Wink



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Milojko
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 11. 2008. (14:57:52)
Postovi: (453)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
17 = 68 - 51
Lokacija: Hilbertov hotel

PostPostano: 16:14 sri, 24. 6. 2009    Naslov: Citirajte i odgovorite

[code:1]
typedef struct{
char ime[16];
int broj;
char nast[10];
} redak;

/* trazenje dali se element pojavljuje unutar niza i ako se pojavljuje
povećava mu se broj. u suprotnom, novi element se zapisuje u niz */

void search(redak lista[], char nejm[], char put[], int b, int *n) {
int i;
for (i = 0; i < *n; ++i) {
if (!strcmp(lista[i].ime, nejm)) {
lista[i].broj += b;
}
}
strcpy(lista[i].ime, nejm);
lista[i].broj = b;
strcpy(lista[i].nast, put);
++(*n);
}


void pon(FILE *in, FILE *out) {
redak lista[200];
int i, br, n = 0;
char nejm[16], put[10];

/* ovdje brojim i pišem u niz */

while (fscanf(in, " %s %d %s", nejm, &br, put)) {
search(lista, nejm, put, br, &n);
}

/* ovdje to čud ispisujem u datoteku out */

for (i = 0; i < n; ++i) {
int j = 0;
while (j < lista[i].broj) {
fprintf(out, "%s ", lista[i].ime);
j++;
}
fprintf(out, "\n");
}
}[/code:1]

radi se o zadatku sa datotekama iz C grupe kolokvija iz 06/07. negdje unutar ovih funkcija gazim po memoriji, ili tako nešto. "Application error" javlja i veli "memorry could not be read"
unutar glavnog programa datoteke su uredno otvorene kako treba.
Kod:

typedef struct{
        char ime[16];
        int broj;
        char nast[10];
        } redak;
       
/* trazenje dali se element pojavljuje unutar niza i ako se pojavljuje
   povećava mu se broj. u suprotnom, novi element se zapisuje u niz */
           
void search(redak lista[], char nejm[], char put[], int b, int *n) {
     int i;
     for (i = 0; i < *n; ++i) {
         if (!strcmp(lista[i].ime, nejm)) {
                                   lista[i].broj += b;
                                   }
         }
     strcpy(lista[i].ime, nejm);
     lista[i].broj = b;
     strcpy(lista[i].nast, put);
     ++(*n);
     }
       
       
void pon(FILE *in, FILE *out) {
     redak lista[200];
     int i, br, n = 0;
     char nejm[16], put[10];
     
     /* ovdje brojim i pišem u niz */
     
     while (fscanf(in, " %s %d %s", nejm, &br, put)) {
           search(lista, nejm, put, br, &n);
           }
     
     /* ovdje to čud ispisujem u datoteku out */
     
     for (i = 0; i < n; ++i) {
         int j = 0;
         while (j < lista[i].broj) {
               fprintf(out, "%s ", lista[i].ime);
               j++;
               }
         fprintf(out, "\n");
         }
     }


radi se o zadatku sa datotekama iz C grupe kolokvija iz 06/07. negdje unutar ovih funkcija gazim po memoriji, ili tako nešto. "Application error" javlja i veli "memorry could not be read"
unutar glavnog programa datoteke su uredno otvorene kako treba.



_________________
Sedam je prost broj Smile

Bolonja je smeće i to pod hitno treba mijenjat
[Vrh]
Korisnički profil Pošaljite privatnu poruku MSNM
vsego
Site Admin
Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09)
Postovi: (3561)16
Spol: zombi
Sarma = la pohva - posuda
854 = 1068 - 214
Lokacija: /sbin/init

PostPostano: 20:31 sri, 24. 6. 2009    Naslov: Citirajte i odgovorite

Ajde zakelji cijeli program i ulaznu datoteku. 8)

Usput, u[code:1]if (!strcmp(lista[i].ime, nejm)) {
lista[i].broj += b;
}[/code:1]
ti fali return. :)
Ajde zakelji cijeli program i ulaznu datoteku. Cool

Usput, u
Kod:
if (!strcmp(lista[i].ime, nejm)) {
                                   lista[i].broj += b;
                                   }

ti fali return. Smile



_________________
U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju.
Drzim prodike
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Éomer
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 04. 2009. (17:35:52)
Postovi: (13)16
Sarma = la pohva - posuda
= 1 - 1
Lokacija: Edoras, Rohan

PostPostano: 4:14 čet, 25. 6. 2009    Naslov: Citirajte i odgovorite

[quote="Luuka"][quote="moi"]
Ana Pero 100
Pero Ante 150
[/quote]

fscanf (dat, "%s %s %d", ime1,ime2,&broj);

gdje je dat pointer na ulaznu datoteku, ime1 i ime2 dovoljno veliki char[], a broj integer.
[/quote]

OK ovo super funkcionira kada imamo razmake izmedju stringova i intova, pa program "vidi" kada je unesen prvi string, pa drugi string, pa int... ali sto ako nema razmaka nego je sve u jednom redu? Kako onda ucitati podatke iz datoteke? Npr:

[img]http://i41.tinypic.com/fm4az7.jpg[/img]

Kada bi umjesto [tt]192+3918[/tt] pisalo [tt]192[/tt][bg=red] [/bg][tt]3918[/tt] onda bi unos bio kao sto je Luuka napisao ali sto ako u jednom redu imamo dva broja i jos neke charove a moramo ucitati samo brojeve?
Luuka (napisa):
moi (napisa):

Ana Pero 100
Pero Ante 150


fscanf (dat, "%s %s %d", ime1,ime2,&broj);

gdje je dat pointer na ulaznu datoteku, ime1 i ime2 dovoljno veliki char[], a broj integer.


OK ovo super funkcionira kada imamo razmake izmedju stringova i intova, pa program "vidi" kada je unesen prvi string, pa drugi string, pa int... ali sto ako nema razmaka nego je sve u jednom redu? Kako onda ucitati podatke iz datoteke? Npr:



Kada bi umjesto 192+3918 pisalo 192 3918 onda bi unos bio kao sto je Luuka napisao ali sto ako u jednom redu imamo dva broja i jos neke charove a moramo ucitati samo brojeve?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Gino
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2008. (10:54:06)
Postovi: (370)16
Sarma = la pohva - posuda
-29 = 108 - 137
Lokacija: Pula

PostPostano: 8:55 čet, 25. 6. 2009    Naslov: Citirajte i odgovorite

ucitas sve kao string, npr pa s njime nesto radis

npr u nekom zadatku je bio zapis u obliku broj x broj samo bez razmaka
znaci nesto ala 54x283, meni su trebali brojevi, tocnije njihov produkt

[code:1]
while(ime[i]){
if(ime[i]=='x') x=1;
if(x==0){
prvi*=10;
prvi+=((int)ime[i]-(int)'0');
}
if(x==1 && ime[i]!='x'){
drugi*=10;
drugi+=((int)ime[i]-(int)'0');
}
i++;
} x=0; i=0;
polje[j+k*100].povrsina=prvi*drugi;
[/code:1]
ucitas sve kao string, npr pa s njime nesto radis

npr u nekom zadatku je bio zapis u obliku broj x broj samo bez razmaka
znaci nesto ala 54x283, meni su trebali brojevi, tocnije njihov produkt

Kod:

                                    while(ime[i]){
                                                  if(ime[i]=='x') x=1;
                                                  if(x==0){
                                                           prvi*=10;
                                                           prvi+=((int)ime[i]-(int)'0');
                                                           }
                                                  if(x==1 && ime[i]!='x'){
                                                          drugi*=10;
                                                          drugi+=((int)ime[i]-(int)'0');
                                                          }
                                                  i++;
                                                  } x=0; i=0;
                                    polje[j+k*100].povrsina=prvi*drugi;



_________________
Mario Berljafa
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 10:00 čet, 25. 6. 2009    Naslov: Citirajte i odgovorite

[quote="Éomer"]
[tt]192+3918[/tt] [/quote]

Ako znaš da će ti to pisat, nema problema, onda ovak:

fscanf (dat, "%d+%d", &broj1,&broj2); :D
Éomer (napisa):

192+3918


Ako znaš da će ti to pisat, nema problema, onda ovak:

fscanf (dat, "%d+%d", &broj1,&broj2); Very Happy



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gino
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 11. 09. 2008. (10:54:06)
Postovi: (370)16
Sarma = la pohva - posuda
-29 = 108 - 137
Lokacija: Pula

PostPostano: 10:05 čet, 25. 6. 2009    Naslov: Citirajte i odgovorite

a da... ja ga nekad bas volim komplicirat
a da... ja ga nekad bas volim komplicirat



_________________
Mario Berljafa
[Vrh]
Korisnički profil Pošaljite privatnu poruku
Luuka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54)
Postovi: (925)16
Spol: muško
Sarma = la pohva - posuda
188 = 301 - 113
Lokacija: Hakuna Matata

PostPostano: 10:11 čet, 25. 6. 2009    Naslov: Citirajte i odgovorite

I ako već učitaš kao string (nek se zove s), onda možeš ovo:

sscanf(s, "%dx%d,&broj1,&broj2);

pa će ti iz stringa isčitat brojeve :D
I ako već učitaš kao string (nek se zove s), onda možeš ovo:

sscanf(s, "%dx%d,&broj1,&broj2);

pa će ti iz stringa isčitat brojeve Very Happy



_________________
"Bolje bi prolazio na faxu da sam na drogama nego na netu" - by a friend of mine
"Poslije spavanja doma spavanje bilo di mi je najdraža stvar" - by the same guy Very Happy
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Éomer
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 24. 04. 2009. (17:35:52)
Postovi: (13)16
Sarma = la pohva - posuda
= 1 - 1
Lokacija: Edoras, Rohan

PostPostano: 12:48 čet, 25. 6. 2009    Naslov: Citirajte i odgovorite

Zahvaljujem! :D
Zahvaljujem! Very Happy


[Vrh]
Korisnički profil Pošaljite privatnu poruku
matka
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 03. 03. 2008. (11:07:54)
Postovi: (38)16
Sarma = la pohva - posuda
= 5 - 2

PostPostano: 17:55 čet, 25. 6. 2009    Naslov: Citirajte i odgovorite

trebam malu pomoć kod datoteka...
imam dvije datoteke, in i out
in izgleda ovako
4 6
.A..A.
A..AAA
..A..A
A.A.A.
i sad tu datoteku moram prepisati u datoteku out
tako da prvo budu redovi koje počinju
sa A, a onda svi koji počinju sa ., znači bitan je samo
prvi znak reda
mene zanima kako izgleda dio programa u kojem
prepisujemo iz in u out
hvala...
trebam malu pomoć kod datoteka...
imam dvije datoteke, in i out
in izgleda ovako
4 6
.A..A.
A..AAA
..A..A
A.A.A.
i sad tu datoteku moram prepisati u datoteku out
tako da prvo budu redovi koje počinju
sa A, a onda svi koji počinju sa ., znači bitan je samo
prvi znak reda
mene zanima kako izgleda dio programa u kojem
prepisujemo iz in u out
hvala...


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Idite na 1, 2  Sljedeće
Stranica 1 / 2.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan