Newsgroup: it.comp.lang.c
Titolo: di nuovo fermo

#include <stdio.h>
#include <time.h>
#define Max 257995
#define EOS '\0'
#define k    33000                                  // ho generato i numeri
disordinati con rand() => ho un tetto massimo di 33000num
void counting_sort ( int A[], int n );
clock_t t;
clock_t ts;
int a[Max];
main()
{FILE *f;
    int i;char s[10];
....... tutto bene......  }
void counting_sort ( int A[], int n )
{.........}
come faccio a modificare il valore massimo di grandezza dello stack?
girando  qua e  là  ho trovato soltanto un storia del tipo /Ge (enable stake
probe) ma dubito sia una cosa
inerente al problema.
sapete come fare ad aumentare lo stack ??
dove posso trovare delle info in rete in italiano??
buona serata.

scusa, io non ho capito qual'e' il problema?
ciao
donCiccio

 scusa, io non ho capito qual'e' il problema?
la funzione di counting sort si pianta e arriva un messaggio  che dice
overflow stack.
La cosa secondo me è strana perchè non sto lavorando con un poca memoria.
con la qsort tutto bene perchè l'array su cui lavora è uno solo.
con il counting sort No perchè ne crea 2 : uno ausiliario
                                                               uno di output
+  l'array che contiene i num da ordinare.
il num max di num che posso ordinare è 257990
è una cosa patetica, ma sono sicuro che cè il modo di risolvere il problema
basta che mi
spieghi dove mettere le mani.(forse nel file \CRT\SRC\stack oppure basta
settare in giusto modo il compilatore(VC++)).
buona notte.


dall'help del VC++5.0:
--
The Stack Allocations (/STACK:reserve[,commit]) option sets the size of the
stack in bytes.
To find this option in the development environment, click Settings on the
Project menu. Then click the Link tab, and click Output in the Category box.
The Reserve text box (or in the reserve argument on the command line)
specifies the total stack allocation in virtual memory. The default stack
size is 1 MB. The linker rounds up the specified value to the nearest 4
bytes.
--
ma secondo me non e' cosi' che dovresti risolvere il tuo problema,
piuttosto anziche' dichiarare il secondo array nello stack, prova a
mallocarlo e poi ricordati di liberarlo prima di uscire dalla funzione.
ciao
donCiccio

 Luca Astengo == Renzo_Arbore ?
si certo, tutti e due facciamo molto ridere

ah... dimenticavo i ringraziamenti, mi sei stato di grande aiuto.
sarebbe anche utile che cominciassi a leggermi l'help da solo.
ciao.

 come faccio a modificare il valore massimo di grandezza dello stack?
Non ho capito il problema...  forse il passaggio di A?
in questo caso puoi fare cosi`:
void counting_sort (int *A, int n) {
	...
}
int main () {
	int A[257995]; /* Perche` dichiaralo globale e passarlo come
	parametro? */
	int n;
	...
	counting_sort(A, n);
	...
}
In questo modo non viene messo sullo stack tutto l'array, ma solo il
puntatore al primo elemento. In counting_sort puoi continuare ad usare
la notazione A[n].
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Let me make your mind, leave yourself behind
Be not afraid

 ...
le due forme sono equivalenti per gli array, e' sempre e solo il puntatore
che viene passato alla funzione, non tutto l'array.
ciao
donCiccio

Kronos
In questo caso pero´ metti un bell´array enorme sullo stack, dichiarandolo
staticamente all´interno del main.
Maurus