Λιγο βοήθεια με τη C
Dimitris Mexis
m65 at vivodinet.gr
Fri Jun 2 17:43:21 EEST 2006
On Fri, 02 Jun 2006 00:17:35 +0300, Chameleon wrote:
> An lew malakies einai epeidh eimai piwmenos. Exw katebasei ikanh
> posothta ouzou.
>
Den the se parexigousa etsi kai alleos...
>
> Auto poy xrhsimopoieis einai C++
> an 8eleis C sketh, xrhsimopoihse printf anti gia cout.
>
C++ rulez, apla i C einai voliki ores ores
> Anti na xrhsimopoieis auto to blakwdes algori8mo ta3inomhshs,
> xrhsimopoihse quick sort.
>
Den einai vlakodes o algorithmos taxinomisis, giati den einai provlima
aftos...
> Den xreiazetai na ton ylopoihseis. yparxei etoimos sthn ANSI C.
>
> apo to MSDN:
LINUX!
> ----------------------
> Performs a quick sort.
>
>
> void qsort(
> void *base,
> size_t num,
> size_t width,
> int (__cdecl *compare )(const void *, const void *)
> );
>
>
>
> Parameters
> base
> Start of target array. ****** matrix
>
> num
> Array size in elements. ****** sizeof( matrix )/sizeof( matrix[0] )
>
> width
> Element size in bytes. ****** sizeof double
>
> compare
> Comparison function. The first parameter is a pointer to the key for the
> search and the second parameter is a pointer to the array element to be
> compared with the key.
> -----------------------
>
> prepei na ylopoihseis mia synarthsh poy na elegxei tous dyo double.
> (mesw pointer o elegxos)
>
>
>
>
>
> An telika to 8eleis se C++ xrhsimopoihse ena map<double, int>. Auto den
> 8elei kan ta3inomhsh.
>
STL? ox!
> An to 8eleis se C, gia kalytera, ta3inomhse ta kai meta kane ena struct
> san ki auto:
>
> struct {
> double key;
> int freq;
> } map_element;
>
Diladi na tsekaro se kathe key, an ehei bei se proigoumeno key o arithmos
pou tha theso...kai i antistixi sixnotita emfanisis...
> mporeis na epistrefeis ena pointer se array apo map_element apo thn
> freq_array. Prepei na kaneis allocation mesa sth freq_array kai
> deallocation ektos auths. Auto den einai kalh texnikh programmatismoy.
> Protimhse na kaneis allocation sthn main me osa stoixeia exei to arxiko
> array (ektos ki an 3ereis kati allo gia thn poikilia twn stoixeiwn) kai
> deallocation pali sth main (den 8a exoun xrhsimopoih8ei ola ta stoixeia
> tou neou array pi8anon)
>
>
> Asxeto, alla eisai ligo off-topic.
> dokimase to comp.lang.c h comp.lang.c++ h akoma kalytera to
> alt.comp.lang.learn.c-c++
>
>
Eixa kairo na kano ena post edo... :-)
>
> Dimitris Mexis wrote:
>> Exo ton parakato kodika, pistevo oti tha nai efkolo poli, se kapoion na
>> to trexi me ena gcc apla...
>> To provlima einai oti stelno loipon, mia matrix[] array stin sinartisi
>> selsort(), mou sortari tin array, pame kala, stelno meta tin matrix[]
>> array sto freq_array() kai pragmati petixeno na perno, poses times ehei
>> vrei...OMOS. Exo kolisi sto pos telika na paro mia struct(?), array(?),
>> list(? den xero kai STL ), me tis metavlites kai tin sixnotita apla pou
>> emfanizontai...diladi mia nea isos matrix, pou na leei oti telika to 1
>> to de 1 , to 2 to vrike 3, klp klp, kai oxi 1,1,2,2,2,3,3,4 klp klp...
>> Prospatho na vgalo mia routina pou apla na mou epistrefi tin sixnotita
>> emfaniseis ton apotelesmaton tis matrix....(Me para poli apla logia)
>> :-)
>> Efharisto!
>>
>> void freq_array( double mtx[], int elements ){ //The mtx is a ghost of
>> the matrix I transfer, VORSICHT!!!
>>
>> selsort( mtx, elements );
>>
>> int found = 0;
>>
>> cout << "...after!" << endl;
>> for ( int i = 0; i < elements; i++ ){
>> for ( int x = 0; x < elements; x++ ){
>> if ( mtx[x] == mtx[i] ){
>> found++;
>> }
>> }
>> cout << "Found value :" << mtx[i] << ", times :" << found << endl;
>> found = 0;
>> }
>> }
>> }
>> //Selection Sort function
>> //Takes two parameters:
>> //int *array- the array with the numbers to be sorted //int size- the
>> size of the array
>> void selsort( double *array,int size){
>> int min;int b;
>> //This loop goes through the whole array for( int a = 0; a < size-1;
>> a++ ){
>> b=a;
>> min=array[b]; //Get the current value
>> //...and check if any of the rest numbers is lower
>> for(int j=a+1;j<size;j++){
>> if( array[j]< min ){
>> b = j;
>> min = array[b]; //...and if yes, then get it
>> }
>> }
>> //Switch the values...
>> array[b]=array[a];
>> array[a]=min;
>> }
>> }
>> }
>> int main(int argc, char *argv[])
>> {
>> double matrix[10];
>> cout << "before..." << endl;
>> for ( int i = 0; i < 10; i++ ){
>> matrix[i] = 10 - i;
>> matrix[3] = 3;
>> matrix[4] = 3;
>> matrix[1] = 2;
>> matrix[0] = 0;
>> cout << matrix[i] << endl;
>> }
>> freq_array( matrix, ( sizeof( matrix )/sizeof( matrix[0] ) ) );
>>
>> exit(0);
>> }
>>
>>
More information about the Linux-greek-users
mailing list