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

zadatak s roka 24.4.2006. HELP
WWW:

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
aenima
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 17. 09. 2004. (17:03:42)
Postovi: (57)16
Spol: muško
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 4:17 uto, 25. 4. 2006    Naslov: zadatak s roka 24.4.2006. HELP Citirajte i odgovorite

Imam problem s trecim zadatkom, evo koda koji ne funkcionira zbog meni nepoznatih razloga :


[code:1]#include <stdlib.h>
#include <stdio.h>


int main()
{
int n,m,i,j;
FILE *ex, *in;
char **aa;
if(!(ex=fopen("ulaz.txt","rt")))
{
printf("Nemogu otvoriti 'ulaz.txt'\n");
scanf("\n");
exit(1);
}
fscanf(ex,"%d%d",&n,&m);
if(!(aa=(char**)malloc(n*sizeof(char*))))
{
printf("Neuspjela alokacija memorije\n");
scanf("\n");
exit(-1);
}
for(i=0;i<n;i++)if(!(aa[i]=(char*)malloc(m*sizeof(char))))
{
printf("Neuspjela alokacija memorije\n");
scanf("\n");
exit(-1);
}

for(i=0;i<n;i++) fscanf(ex,"%[^\n]",aa[i]);
fclose(ex);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
aa[i][j]=aa[j][i];
if(!(in=fopen("izlaz.txt","wt")))
{
printf("Nemogu otvoriti 'izlaz.txt'\n");
scanf("\n");
exit(-1);
}
for(i=0;i<n;i++)fprintf(in,"%s\n",aa[i]);

fclose(in);
system("PAUSE");
return 0;
}[/code:1]

zadatak glasi:


U prvom retku tekstualne datoteke "ulaz.txt" nalaze se dva prirodna broja
m i n, nakon čega dolazi tekstualni sadržaj sastavljen od n linija, od kojih je svaka duljine najviše m znakova. Napišite program koji u datoteku "izlaz.txt" ispisuje "transponirani tekstualni sadržaj iz datoteke ulaz.txt koji je dobiven zamjenom redaka i stupaca na način kako to pokazuje sljedeći primjer:

"ulaz.txt": 3 3 "izlaz.txt" : 2o!
2 b rb
or b b
!2

hvala na bilokakvoj pomoći :lol:
Imam problem s trecim zadatkom, evo koda koji ne funkcionira zbog meni nepoznatih razloga :


Kod:
#include <stdlib.h>
#include <stdio.h>


int main()
{
  int n,m,i,j;
  FILE *ex, *in;
  char **aa;
  if(!(ex=fopen("ulaz.txt","rt")))
                {
                     printf("Nemogu otvoriti 'ulaz.txt'\n");
                     scanf("\n");
                     exit(1);
                }
  fscanf(ex,"%d%d",&n,&m);
  if(!(aa=(char**)malloc(n*sizeof(char*))))
                {
                      printf("Neuspjela alokacija memorije\n");
                      scanf("\n");
                      exit(-1);
                }
  for(i=0;i<n;i++)if(!(aa[i]=(char*)malloc(m*sizeof(char))))
                             {
                                              printf("Neuspjela alokacija memorije\n");
                                              scanf("\n");
                                              exit(-1);
                             }

  for(i=0;i<n;i++) fscanf(ex,"%[^\n]",aa[i]);
  fclose(ex);
  for(i=0;i<n;i++)
       for(j=0;j<m;j++)
              aa[i][j]=aa[j][i];
  if(!(in=fopen("izlaz.txt","wt")))
                       {
                                   printf("Nemogu otvoriti 'izlaz.txt'\n");
                                   scanf("\n");
                                   exit(-1);
                        }
  for(i=0;i<n;i++)fprintf(in,"%s\n",aa[i]);

  fclose(in);
  system("PAUSE");
  return 0;
}


zadatak glasi:


U prvom retku tekstualne datoteke "ulaz.txt" nalaze se dva prirodna broja
m i n, nakon čega dolazi tekstualni sadržaj sastavljen od n linija, od kojih je svaka duljine najviše m znakova. Napišite program koji u datoteku "izlaz.txt" ispisuje "transponirani tekstualni sadržaj iz datoteke ulaz.txt koji je dobiven zamjenom redaka i stupaca na način kako to pokazuje sljedeći primjer:

"ulaz.txt": 3 3 "izlaz.txt" : 2o!
2 b rb
or b b
!2

hvala na bilokakvoj pomoći Laughing


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
aenima
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 17. 09. 2004. (17:03:42)
Postovi: (57)16
Spol: muško
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 4:20 uto, 25. 4. 2006    Naslov: Citirajte i odgovorite

[quote] ispravak :

"ulaz.txt": 3 3 "izlaz.txt": 2o!
2 b r2
or b b
!2b

[/quote]
Citat:
ispravak :

"ulaz.txt": 3 3 "izlaz.txt": 2o!
2 b r2
or b b
!2b



[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
aenima
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 17. 09. 2004. (17:03:42)
Postovi: (57)16
Spol: muško
Sarma = la pohva - posuda
= 1 - 0

PostPostano: 4:23 uto, 25. 4. 2006    Naslov: Citirajte i odgovorite

[code:1] "ulaz.txt": "izlaz.txt":
3 3 2o!
2 b r2
or b b
!2b

[/code:1]

pravi ispravak :oops:
Kod:
 "ulaz.txt":                             "izlaz.txt":
                          3 3                                            2o!           
                          2 b                                              r2
                          or                                              b b
                          !2b

           


pravi ispravak Embarassed


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Zvone
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 01. 07. 2003. (13:09:44)
Postovi: (9D)16
Sarma = la pohva - posuda
67 = 74 - 7

PostPostano: 14:04 uto, 25. 4. 2006    Naslov: Citirajte i odgovorite

Evo par greskica u programu koje sam uocio:

1. Alociras memoriju za n puta m matricu, ali kod trasponiranja matrice ponekad izadjes izvan dozvoljenih indexa. Npr. ako je n=3 i m=5, u transponiranju ce se pojaviti i npr. aa[2][4]=aa[4][2], ali aa[4][bilosto] nije dozvoljeno. Tu se recimo mozes izvuci tako da alociras kvadratnu matricu dimenzija max{n,m}.

2. Samo transponiranje nije dobro. Fora je u tome da cim napises aa[i][j]=aa[j][i] se pregazi i zaboravi stara vrijednost od aa[i][j], a i ona se treba preseliti. Treba napraviti swap i paziti da je uvijek i<j:
[code:1]for (i=0; i<n; i++)
for (j=i+1; j<m; j++)
{
char temp=aa[i][j]; aa[i][j]=aa[j][i]; aa[j][i]=temp;
}
[/code:1]
Uoci da ovo i dalje ima problema sa ne-kvadratnim matricama.

3. Nakon ucitavanja treba dodati odgovarajuci broj praznih mjesta u aa[i]:
[code:1]for (i=0; i<n; i++)
{
scanf ("%[^\n]", aa[i]);
for (j=strlen(aa[i]); j<m; j++) aa[i][j]=' ';
aa[i][m]='\0';
}
[/code:1]

Evo mislim da je to sve. Inace, transponiranje zapravo i nije potrebno, jednostavnije je ispisati matricu po stupcima (znak po znak) umjesto transponiranja i ispisa po recima.
Evo par greskica u programu koje sam uocio:

1. Alociras memoriju za n puta m matricu, ali kod trasponiranja matrice ponekad izadjes izvan dozvoljenih indexa. Npr. ako je n=3 i m=5, u transponiranju ce se pojaviti i npr. aa[2][4]=aa[4][2], ali aa[4][bilosto] nije dozvoljeno. Tu se recimo mozes izvuci tako da alociras kvadratnu matricu dimenzija max{n,m}.

2. Samo transponiranje nije dobro. Fora je u tome da cim napises aa[i][j]=aa[j][i] se pregazi i zaboravi stara vrijednost od aa[i][j], a i ona se treba preseliti. Treba napraviti swap i paziti da je uvijek i<j:
Kod:
for (i=0; i<n; i++)
    for (j=i+1; j<m; j++)
    {
        char temp=aa[i][j]; aa[i][j]=aa[j][i]; aa[j][i]=temp;
    }

Uoci da ovo i dalje ima problema sa ne-kvadratnim matricama.

3. Nakon ucitavanja treba dodati odgovarajuci broj praznih mjesta u aa[i]:
Kod:
for (i=0; i<n; i++)
{
    scanf ("%[^\n]", aa[i]);
    for (j=strlen(aa[i]); j<m; j++) aa[i][j]=' ';
    aa[i][m]='\0';
}


Evo mislim da je to sve. Inace, transponiranje zapravo i nije potrebno, jednostavnije je ispisati matricu po stupcima (znak po znak) umjesto transponiranja i ispisa po recima.




Zadnja promjena: Zvone; 20:42 uto, 25. 4. 2006; ukupno mijenjano 1 put.
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
Gost






PostPostano: 20:37 uto, 25. 4. 2006    Naslov: Citirajte i odgovorite

Puno hvala :P
Puno hvala Razz


[Vrh]
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.
Stranica 1 / 1.

 
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