Re: I'm a newbie. Is this code ugly?
"gert" <27hiro@googlemail.com> ha scritto nel messaggio
news:e4951ec7-f09b-4b74-9cf8-a7a9e19e400c@22g2000yqr.googlegroups.com...
I'm using a class which can sinksort an array of it's own objects and
an example T class, which can have names and stuff...
I was in doubt about what to do about nearly any line, so I would love
any of your recommendations...
what about this?
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
using namespace std;
class T{
public:
char *num_, *surname_;
char *key_;
};
class ArrArrT{
public:
T** v;
int n;
int sz;
ArrArrT(){v=0; n=0; sz=0;}
int add(char *num, char *key, char *surname)
{if(sz<=n){T **p;
p=(T**)realloc(v, (n+128)*sizeof(T*));
if(p==0) return 0;
sz=n+128;
v =p;
}
v[n]=(T*) malloc(sizeof(T));
if(v[n]==0) return 0;
v[n]->num_=num; v[n]->key_=key; v[n]->surname_=surname;
++n;
return 1;
}
void sort()
{int i, hit=1, len=n;
T *temp;
while(len>1&&hit)
{len--;
hit=0;
for(i=0; i<len; ++i)
if(strcmp(v[i]->key_,v[i+1]->key_)>0)
{temp=v[i]; v[i]=v[i+1]; v[i+1]=temp; hit=1;}
}
}
~ArrArrT(){int i=n;
for(--i; i>=0; --i)
free(v[i]);
free(v);
}
};
int main(void)
{int i;
ArrArrT a;
i=1;
i*=a.add("a","Mann","Thomas");
i*=a.add("b","Satie","Erik");
i*=a.add("c","Goldfarb","Sarah");
i*=a.add("d","Ravel","Maurice");
i*=a.add("e","Hideyuki","Tanaka");
i*=a.add("f","Twain","Mark");
if(i==0) {cout << "Memory error\n"; return 0;}
a.sort();
for(i=0; i<a.n; ++i)
cout <<a.v[i]->surname_<<"\t"<<a.v[i]->key_<<"\n";
return 0;
}