Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

binarno drvo i datoteka!!!!

[es] :: C/C++ programiranje :: binarno drvo i datoteka!!!!

[ Pregleda: 3963 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

verden

Član broj: 68058
Poruke: 1
*.crnagora.net.



Profil

icon binarno drvo i datoteka!!!!17.09.2005. u 13:53 - pre 234 meseci
cao,svima!potrebna mi je pomoc u vezi sljedeceg zadatka:u tekstualnoj datoteci se u prvom redu nalaze broj vrsta i kolona matrice,a u sljedecim redovima su elementi matrice!potrebno je te elemente iscitati,ubaciti u binarno drvo i zatim drvo odstampati u inorder redosljedu!
morate priznati da je zadatak vrlo jednostavan,ali moj kod ipak ne funkcionise!tacnije,uvijek mi javlja poruku da se datoteka ne moze otvoriti!
ako neko ima vremena neka neka pogleda kod i javi mi u cemu grijesim!!!
unaprijed hvala!
a evo i koda:



#include<stdio.h>
#include<stdlib.h>
struct tree
{
float value;
struct tree* left;
struct tree* right;
};
void insert(tree* tr,float data)
{
if(tr==NULL)
{
struct tree* New=(struct tree*)malloc(sizeof(struct tree));
New->value=data;
New->left=NULL;
New->right=NULL;
tr=New;
}
else
{
if(data<tr->value)
insert(tr->left,data);
else insert(tr->right,data);
}
}
void FileToTree(struct tree** tr,char* FileName)
{
FILE* fp;
int m,n,i,j;
float a;
if((fp=fopen(FileName,"r"))==NULL)
{
printf("datoteka se ne moze otvoriti!\n");
return;
}
else
{
fscanf(fp,"%d",&m);
fscanf(fp,"%d",&n);
while(!feof(fp))
{
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
fscanf(fp,"%f",&a);
insert(*tr,a);
}
}
}
fclose(fp);
}
void inorder(struct tree* tr)
{
if(tr!=NULL)
{
inorder(tr->left);
printf("%f ",tr->value);
inorder(tr->right);
}
}
void main()
{
char* FileName="Matrix.txt";
struct tree* tr=(struct tree*)malloc(sizeof(struct tree));
FileToTree(&tr,FileName);
inorder(tr);
}
 
Odgovor na temu

_VampiR_
Dejan Menges
Sarajevo, BiH

Član broj: 51402
Poruke: 83
217.75.206.*



Profil

icon Re: binarno drvo i datoteka!!!!17.09.2005. u 16:57 - pre 234 meseci
Onako od oka, eksperimentisi malo s imenom datoteke i vidi zasto se ne moze otvoriti. Mozda je do putanje, mozda ime datoteke pocinje malim slovom...
:: Don't drink contaminated water - drink beer ::
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
..31.216.81.gus.vf.siwnet.net.

Sajt: dejan.lekic.org


+2 Profil

icon Re: binarno drvo i datoteka!!!!18.09.2005. u 00:46 - pre 234 meseci
Moze biti bas svasta u pitanju... Trebalo je da nam posaljes gresku koju javlja kompajler/linker...
Primecujem gresku u "void insert(tree* tr,float data)" liniji. Druga "greska" je u void main() - prema standardu main() treba da vraca celobrojnu vrednost (int)...
Ako se kod posalje na forum u malo boljem izdanju (nazubljen) onda se mozda vide i neke druge potencijalne greske.
Code:

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

struct tree {
  float value;
  struct tree *left;
  struct tree *right;
};

void insert( struct tree* tr, float data ) 
{
  if ( tr == NULL ) {
    struct tree * New = ( struct tree * ) malloc ( sizeof ( struct tree ) );
    New->value = data;
    New->left = NULL;
    New->right = NULL;
    tr = New;
  } else {
    if ( data < tr->value )
      insert ( tr->left, data );
    else
      insert ( tr->right, data );
  }
}

void FileToTree( struct tree **tr, char *FileName ) 
{
  FILE *fp;
  int m, n, i, j;
  float a;

  if ( ( fp = fopen ( FileName, "r" ) ) == NULL ) {
    printf ( "datoteka se ne moze otvoriti!\n" );
    return ;
  } else {
    fscanf ( fp, "%d", &m );
    fscanf ( fp, "%d", &n );
    while ( !feof ( fp ) ) {
      for ( i = 0; i < m; i++ )
        for ( j = 0; j < n; j++ ) {
          fscanf ( fp, "%f", &a );
          insert ( *tr, a );
        }
    }
  }

  fclose ( fp );
}

void inorder ( struct tree *tr ) 
{
  if ( tr != NULL ) {
    inorder ( tr->left );
    printf ( "%f ", tr->value );
    inorder ( tr->right );
  }
}

int main() 
{
  char * FileName = "Matrix.txt";

  struct tree *tr = ( struct tree * ) malloc ( sizeof ( struct tree ) );
  FileToTree ( &tr, FileName );
  inorder ( tr );
}


Jedna od mogucih gresaka je da u direktorijumu gde je izvrsni fajl nemas Matrix.txt fajl. Takodje, ako ovaj program koristis na UNIX masinama, onda treba da primetis da imas veliko slovo na pocetku. UNIX nije Windows, tamo se pravi razlika izmedju velikih i malih slova, te "Matrix.txt" nije isto sto i "matrix.txt" ...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

[es] :: C/C++ programiranje :: binarno drvo i datoteka!!!!

[ Pregleda: 3963 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.