13/07/09 10:24
sara82
Ciao a tutti!Sono Sara e mi sono avvicinata da poco tempo al C
Insieme al mio gruppo universitario ho dovuto creare un programma statistico in C che mi permetta di effettuare combinazioni di n valori in k gruppi
Per quanto riguarda le combinazioni dopo un pò di fatica sono riuscita a trovare un algoritmo da adattare al mio codice. Ora sono davanti a un problema: il programma mi stampa le combinazioni mentre a me serve non che le stampi, ma che le inserisca in un array a parte su cui poi continuare a lavorare...qualcuno può aiutarmi?
Posto qui sotto il mio codice.
-----------------------------------------------------------------------------
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#define MAXNC 600
#define MAXNF 600
#define MAXR 1200
void print_tab(unsigned char tab[],int size_tab)
{ int i;
for(i=0;i<size_tab;i++)
printf("%d",tab);
printf("\n"
}
void permute(unsigned char tab[],unsigned char i,unsigned char j)
{
unsigned char c;
c=tab;
tab=tab[j];
tab[j]=c;
}
void combin(unsigned char tab[],int i, int size_tab)
{
unsigned char j;
if (i==size_tab)
{
print_tab(tab,size_tab);
}
else
for(j=i;j<size_tab;j++)
{
permute(tab,i,j);
combin(tab,i+1,size_tab);
permute(tab,i,j);
}
}
void main()
{
int valorec[MAXNC], valoref[MAXNF], i, nc, nf;
int valoritot[MAXR];
/*Presentazione del programma*/
printf("Gentile utente \n"
printf("Questo e' un Test di permutazione applicabile a grandi campioni \n"
printf("Questo programma vi consentira'di valutare eventuali effetti del vostro farmaco\n"
printf("su un gruppo di individui in analisi rispetto a un gruppo di controllo\n"
printf("\n\n\n"
do {
printf("\n inserire il numero di individui del gruppo di controllo: \n"
scanf("%d", &nc);
}
while(nc<1 || nc>600);
do
{
printf("\n inserire il numero di individui del gruppo di analisi del farmaco: \n"
scanf("%d", &nf);
}
while(nf<1 || nf>600);
printf("\n inserire i valori ottenuti da %d individui del gruppo di controllo \n", nc);
/*array di immissione dei valori ottenuti nel gruppo di controllo*/
for(i=0; i<nc; i++) {
printf("valore %d individuo: ", i+1);
scanf("%d", &valorec);
}
printf("\n inserire i valori ottenuti dagli individui del gruppo di analisi del farmaco \n"
/*array di immissione dei valori ottenuti nel gruppo farmaco */
for(i=0; i<nf; i++) {
printf("valore %d individuo: ", i+1);
scanf("%d", &valoref);
}
/* fusione dei due array */
int j,k;
i = 0; j = 0; k = 0;
do {
if(valorec<=valoref[j])
valoritot[k++] = valorec[i++];
else
valoritot[k++] = valoref[j++];
}
while(i<nc && j<nf);
if(i<nc)
for(; i<nc; valoritot[k++] = valorec[i++]);
else
for(; j<nf; valoritot[k++] = valoref[j++]);
int individui;
individui = nc + nf;
unsigned char tab;
for(i=0;i<individui;i++){
tab=valoritot;
}
combin(tab,0,nf);
}
------------------------------------------------------------------------------
come posso fare per "nascondere" la stampa delle permutazioni e inserirle tutte in un array?
spero qualcuno possa aiutarmi...
Grazie
Sara
Insieme al mio gruppo universitario ho dovuto creare un programma statistico in C che mi permetta di effettuare combinazioni di n valori in k gruppi
Per quanto riguarda le combinazioni dopo un pò di fatica sono riuscita a trovare un algoritmo da adattare al mio codice. Ora sono davanti a un problema: il programma mi stampa le combinazioni mentre a me serve non che le stampi, ma che le inserisca in un array a parte su cui poi continuare a lavorare...qualcuno può aiutarmi?
Posto qui sotto il mio codice.
-----------------------------------------------------------------------------
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#define MAXNC 600
#define MAXNF 600
#define MAXR 1200
void print_tab(unsigned char tab[],int size_tab)
{ int i;
for(i=0;i<size_tab;i++)
printf("%d",tab);
printf("\n"
}
void permute(unsigned char tab[],unsigned char i,unsigned char j)
{
unsigned char c;
c=tab;
tab=tab[j];
tab[j]=c;
}
void combin(unsigned char tab[],int i, int size_tab)
{
unsigned char j;
if (i==size_tab)
{
print_tab(tab,size_tab);
}
else
for(j=i;j<size_tab;j++)
{
permute(tab,i,j);
combin(tab,i+1,size_tab);
permute(tab,i,j);
}
}
void main()
{
int valorec[MAXNC], valoref[MAXNF], i, nc, nf;
int valoritot[MAXR];
/*Presentazione del programma*/
printf("Gentile utente \n"
printf("Questo e' un Test di permutazione applicabile a grandi campioni \n"
printf("Questo programma vi consentira'di valutare eventuali effetti del vostro farmaco\n"
printf("su un gruppo di individui in analisi rispetto a un gruppo di controllo\n"
printf("\n\n\n"
do {
printf("\n inserire il numero di individui del gruppo di controllo: \n"
scanf("%d", &nc);
}
while(nc<1 || nc>600);
do
{
printf("\n inserire il numero di individui del gruppo di analisi del farmaco: \n"
scanf("%d", &nf);
}
while(nf<1 || nf>600);
printf("\n inserire i valori ottenuti da %d individui del gruppo di controllo \n", nc);
/*array di immissione dei valori ottenuti nel gruppo di controllo*/
for(i=0; i<nc; i++) {
printf("valore %d individuo: ", i+1);
scanf("%d", &valorec);
}
printf("\n inserire i valori ottenuti dagli individui del gruppo di analisi del farmaco \n"
/*array di immissione dei valori ottenuti nel gruppo farmaco */
for(i=0; i<nf; i++) {
printf("valore %d individuo: ", i+1);
scanf("%d", &valoref);
}
/* fusione dei due array */
int j,k;
i = 0; j = 0; k = 0;
do {
if(valorec<=valoref[j])
valoritot[k++] = valorec[i++];
else
valoritot[k++] = valoref[j++];
}
while(i<nc && j<nf);
if(i<nc)
for(; i<nc; valoritot[k++] = valorec[i++]);
else
for(; j<nf; valoritot[k++] = valoref[j++]);
int individui;
individui = nc + nf;
unsigned char tab;
for(i=0;i<individui;i++){
tab=valoritot;
}
combin(tab,0,nf);
}
------------------------------------------------------------------------------
come posso fare per "nascondere" la stampa delle permutazioni e inserirle tutte in un array?
spero qualcuno possa aiutarmi...
Grazie
Sara
aaa