PDA

View Full Version : **HELP** Cerco urgentemente qualcuno che mi compili in C


Conan ama Lana
27-06-2003, 09:50
Qualcuno potrebbe gentilmente compilarmi questo codice sorgente in ANSI-C per un programmino che calcola le velocità critiche di un rotore con il metodo di PRHOL ?
Mi serve urgentemente ma non ho idea di come si faccia?
Grazie mille!
Ovviamente verrete ricompensati!
Per favore non chiudetemi questo topic almeno x qualche ora è una cosa veramente vitale! Grazie!

Attenzione: le righine all'inizio e alla fine toglietele! Il file si chiamava PROHL.C

---------------------------------------------------------------
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define max 150 //numero max di stazioni
// registrabili le prime 20 velocit… critiche
double OM,OM1,OM2,H,l[max],m[max],FI[max],V[20];
char L,N,jj;

const double PGR=3.141592654;
const double E=2100000000.*9.81;

void Stampa(void);
void Scritta(void);
void Disegnino(void);
void Visualizza_Dati(void);
void Inserimento_Dati(void);
void Visualizza_Vcrit(void);
void CreaMatrice(double mat[4][4],int a,int b);


void main()
{
char corretto,segno,segnop,fine,siono;
double A1[4][4],A2[4][4],S;
int ch;

//Valori di default sono quelli della tavola 9 però l'uso degli indici è quello
//dei lucidi del corso, quindi l[n] è la lunghezza del tratto che separa la
//stazione n dalla n+1 e FI[n] il diametro del tratto di collegamento tra
//la stazione n e la n+1. Invece nella stampata a video e nella stampa è usata
//la notazione secondo cui l[n] è la lunghezza del tratto che separa la
//stazione n dalla n-1 e FI[n] il diametro del tratto di collegamento tra
//la stazione n e la n-1
//
OM1=5; OM2=1000; H=1; N=11; L=3;

m[0]=.562; l[0]=.103; FI[0]=.042;
m[1]=1.125; l[1]=.103; FI[1]=.052;
m[2]=1.342; l[2]=.092; FI[2]=.06;
m[3]=6.064; l[3]=.132; FI[3]=.147;
m[4]=16.838; l[4]=.175; FI[4]=.147;
m[5]=31.; l[5]=.152; FI[5]=.06;
m[6]=14.378; l[6]=.108; FI[6]=.127;
m[7]=7.023; l[7]=.025; FI[7]=.052;
m[8]=7.323; l[8]=.155; FI[8]=.05;
m[9]=1.959; l[9]=.06; FI[9]=.052;
m[10]=1.371; l[10]=.094; FI[10]=.052;
m[11]=.618;

fine=1;
while(fine)
{
jj=0;
corretto=1;
clrscr();
Scritta();
while(corretto)
{
Disegnino();
Inserimento_Dati();
clrscr();
Visualizza_Dati();
siono=1;
while(siono)
{
printf("Sono esatti i dati? s/n: ");
fflush(stdin);
ch = getc(stdin); /* accetta la selezione dalla tastiera */
fflush(stdin);
if((ch=='s')||(ch=='S')||(ch=='n')||(ch=='N')) siono=0;
} /*siono*/
if((ch=='s')||(ch=='S'))corretto=0;
} /*corretto*/
OM=OM1;
while(OM<=OM2)
{
CreaMatrice(A1,L,0);
CreaMatrice(A2,N,L);
if(L==0)
S=A2[0][1]*A2[3][2]-A2[0][2]*A2[3][1];
else
if(L==N)
S=A1[0][0]*A1[1][1]-A1[0][1]*A1[1][0];
else
{
S= A1[0][0]*(A2[0][1]*A1[1][1]+A2[0][3]*A1[3][1])*A2[3][2];
S=S-A1[0][0]*(A2[3][1]*A1[1][1]+A2[3][3]*A1[3][1])*A2[0][2];
S=S-A1[0][1]*(A2[0][1]*A1[1][0]+A2[0][3]*A1[3][0])*A2[3][2];
S=S+A1[0][1]*(A2[3][1]*A1[1][0]+A2[3][3]*A1[3][0])*A2[0][2];
}


if(OM==OM1) //la prima volta
if(S>=0) segno=1;
else segno=0;
else //dopo la prima volta
{
segnop=segno;
if(S>=0) segno=1;
else segno=0;

if(segno!=segnop)
{
V[jj]=OM;
jj=jj+1;
}
if(jj==20) OM=OM2; /*forza l'uscita se il vettore delle velocit…*/
/*critiche è pieno*/
}
OM=OM+H;
}/*OM<=OM2*/

Visualizza_Vcrit();
siono=1;
while(siono)
{
printf("\n\nStampare il risultato? s/n: ");
fflush(stdin);
ch = getc(stdin); /* accetta la selezione dalla tastiera */
fflush(stdin);
if((ch=='s')||(ch=='S')||(ch=='n')||(ch=='N')) siono=0;
} /*siono*/
if((ch=='s')||(ch=='S')) Stampa();

siono=1;
while(siono)
{
printf("\n\nUscire? s/n: ");
fflush(stdin);
ch = getc(stdin); /* accetta la selezione dalla tastiera */
fflush(stdin);
if((ch=='s')||(ch=='S')||(ch=='n')||(ch=='N')) siono=0;
} /*siono*/
if((ch=='s')||(ch=='S')) fine=0;
}/*fine*/
}/*main*/




double ins_double(double defa)
{
int sal; /*indica il numero di elementi salvati da sscanf */
char str[80];
double x;

printf("[%f] ",defa);
gets(str);
if(str[0]=='\x0')return defa;
sal=sscanf(str, "%lf", &x);
fflush(stdin);/*in caso di input errato*/
while(!(sal==1))
{
printf("Riprova[%g]: ",defa);
gets(str);
if(str[0]=='\x0')return defa;
sal=sscanf(str, "%lf", &x);
fflush(stdin);/*in caso di input errato*/
}

return x;
}
int ins_int(int defa)
{

int sal; /*indica il numero di elementi salvati da sscanf */
char str[80];
int x;

printf("[%d] ",defa);
gets(str);
if(str[0]=='\x0')return defa;
sal=sscanf(str, "%d", &x);
fflush(stdin);/*in caso di input errato*/
while(!(sal==1))
{
printf("Riprova[%d]: ",defa);
gets(str);
if(str[0]=='\x0')return defa;
sal=sscanf(str, "%d", &x);
fflush(stdin);/*in caso di input errato*/
}

return x;
}

void Disegnino(void)
{
printf("\n\n"
" 0 1 2 ... L-1 L ... N-1 N \n"
" \n"
" O------O-------O---//-----O-------O------//-------O-------O \n"
" l1 l2 lL  lN  \n"
" / / \n"
" / / \n"
" (stazione primo appoggio) (stazione secondo appoggio) \n") ;
}

void Visualizza_Dati(void)
{
char i;
printf("\n\n"
"\tÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"
"\t³ TABELLA RIASSUNTIVA ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Numero delle stazioni : %2d ³\n"
"\t³ Stazione del primo appoggio : %2d ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Stazione ³ Distanza [m] ³ Diametro [m] ³ Massa [Kg] ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n",N+1,L);
for(i=0;i<=N;i++)

if(i==0)printf(""
"\t³ %2d ³ ---- ³ ---- ³ %10.3f ³\n",i,m[i]);
else
printf(""
"\t³ %2d ³ %10.3f ³ %10.3f ³ %10.3f ³\n"
"",i,l[i-1],FI[i-1],m[i]);

printf(""
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Intervallo di calcolo : %10.3f -%10.3f rad/s ³\n"
"\t³ Incremento di velocit…: %10.3f rad/s ³\n"
"\tÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"
"",OM1,OM2,H);
}
void Inserimento_Dati(void)
{
double dato;
int i,a;

printf("\n\nInserire N, numero delle stazioni: ");
do
a=ins_int(N);
while( !( a>0 && a<=max ) );
N=a;

printf("Inserire L, numero della stazione del primo appoggio: ");
do
a=ins_int(L);
while( !( a>=0 && a<=max ) );
L=a;

for(i=0;i<=N;i++)
{
printf("\nInserire massa [Kg] per la stazione %d: ",i);
do
dato=ins_double(m[i]);
while( !( dato>.0 && dato<=1e38 ) );
m[i]=dato;
if(i!=0) //per la stazione 0 non occorrono FI e l
{
printf("Inserire distanza [m] tra la stazione %d e la %d: ",i,i-1);
do
dato=ins_double(l[i-1]);
while( !( dato>.0 && dato<=1e38 ) );
l[i-1]=dato;

printf("Inserire diametro del rotore [m] tra la stazione %d e la %d: ",i,i-1);
do
dato=ins_double(FI[i-1]);
while( !( dato>.0 && dato<=1e38 ) );
FI[i-1]=dato;
}
}

printf("\nInserire velocit… angolare iniziale [rad/s]: ");
do
dato=ins_double(OM1);
while( !( dato>.0 && dato<=1e38 ) );
OM1=dato;

printf("Inserire velocit… angolare finale [rad/s]: ");
do
dato=ins_double(OM2);
while( !( dato>.0 && dato<=1e38 ) );
OM2=dato;

printf("Inserire incremento velocit… angolare [rad/s]: ");
do
dato=ins_double(H);
while( !( dato>.0 && dato<=1e38 ) );
H=dato;
}



void Visualizza_Vcrit(void)
{
char i;
float h1,h2;

if(jj==0)printf("\nNon ci sono velocit… critiche.");
else
{
if(jj==1)
{
printf("\nC'Š una velocit… critica nell'intervallo considerato.\n");
h1=V[0]-H;h2=V[0];
printf("\nLa velocit… critica Š tra %6.2f e %6.2f rad/s",h1,h2);
h1=h1*9.54929;h2=h2*9.54929;
printf(" (tra %6.1f e %6.1f rpm)",h1,h2);

}
else
{
printf("\nCi sono %d velocit… critiche nell'intervallo considerato.\n",jj);
for(i=0;i<jj;i++)
{
h1=V[i]-H;h2=V[i];
printf("\nVelocit… critica %d tra %6.2f e %6.2f rad/s",i+1,h1,h2);
h1=h1*9.54929;h2=h2*9.54929;
printf(" (tra %6.1f e %6.1f rpm)",h1,h2);
}
}
}

}


//ad es. con a=4 b=1 restituisce matA = matA4' x matA3 x matA2 x matA1
void CreaMatrice(double mat[4][4],int a,int b)
{
double C[4][4],R[4][4],RP[4][4],I,W;
int ii;
char i,j,k;

for(ii=a-1;ii>=b;ii--)
{
I=pow(FI[ii],4)/64.*PGR;
W=m[ii]*pow(OM,2);

C[0][0]=1.+((pow(l[ii],3)*W)/(6.*E*I)); C[0][1]=-l[ii];
C[0][2]=-(pow(l[ii],3))/(6*E*I); C[0][3]=-(pow(l[ii],2))/(2*E*I);

C[1][0]=-W*pow(l[ii],2)/(2*E*I); C[1][1]=1.;
C[1][2]=pow(l[ii],2)/(2*E*I); C[1][3]=l[ii]/(E*I);

C[2][0]=-W; C[2][1]=0.;
C[2][2]=1.; C[2][3]=0.;

C[3][0]=-W*l[ii]; C[3][1]=0.;
C[3][2]=l[ii]; C[3][3]=1.;

/*

//questa è la matrice che c'è sui lucidi del prof.
//a me non tornano i segni il risultato è però identico
C[0][0]=1.+((pow(l[ii],3)*W)/(6.*E*I));C[0][1]=l[ii];
C[0][2]=-(pow(l[ii],3))/(6*E*I); C[0][3]=-(pow(l[ii],2))/(2*E*I);

C[1][0]=W*pow(l[ii],2)/(2*E*I); C[1][1]=1.;
C[1][2]=-pow(l[ii],2)/(2*E*I); C[1][3]=-l[ii]/(E*I);

C[2][0]=-W; C[2][1]=0.;
C[2][2]=1.; C[2][3]=0.;

C[3][0]=-W*l[ii]; C[3][1]=0.;
C[3][2]=l[ii]; C[3][3]=1.; */

if(ii==a-1) //al primo passaggio inizializza la matrce RP
for(j=0;j<=3;j++)
for(k=0;k<=3;k++) RP[j][k]=C[j][k];

else
{
for(i=0;i<=3;i++) //matR=0
for(j=0;j<=3;j++) R[i][j]=0;

for(i=0;i<=3;i++) // matR=matRP*matC
for(k=0;k<=3;k++)
for(j=0;j<=3;j++) R[i][k]=R[i][k]+RP[i][j]*C[j][k];

for(i=0;i<=3;i++)
for(j=0;j<=3;j++) RP[i][j]=R[i][j];
}
}


//questa è la matrice che trasforma le caratterstiche di sollecitazione
//da sinistra a destra dell'ultima sezione considerata
C[0][0]=1; C[0][1]=0.;
C[0][2]=0.; C[0][3]=0.;

C[1][0]=0.; C[1][1]=1.;
C[1][2]=0.; C[1][3]=0.;

C[2][0]=-m[a]*pow(OM,2); C[2][1]=0.;
C[2][2]=1.; C[2][3]=0.;

C[3][0]=0.; C[3][1]=0.;
C[3][2]=0.; C[3][3]=1.;

for(i=0;i<=3;i++) //matR=0
for(j=0;j<=3;j++) R[i][j]=0;


for(i=0;i<=3;i++) // matR=matC*matRP
for(k=0;k<=3;k++)
for(j=0;j<=3;j++) R[i][k]=R[i][k]+C[i][j]*RP[j][k];


for(i=0;i<=3;i++)
for(j=0;j<=3;j++) mat[i][j]=R[i][j];

}



void Scritta(void)
{
clrscr();


printf(""
"\tÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n"
"\tº º\n"
"\tº PROGRAMMA PER IL CALCOLO DELLE VELOCITA' º\n"
"\tº CRITICHE DI UN ROTORE CON IL METODO º\n"
"\tº DI PROHL SEMPLIFICATO º\n"
"\tº º\n"
"\tÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
}

void Stampa(void)
{
char i;

fprintf(stdprn,"\n"
"\tÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n"
"\tº º\n"
"\tº PROGRAMMA PER IL CALCOLO DELLE VELOCITA' º\n"
"\tº CRITICHE DI UN ROTORE CON IL METODO º\n"
"\tº DI PROHL SEMPLIFICATO º\n"
"\tº º\n"
"\tÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
fprintf(stdprn,"\n\n"
"\tÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"
"\t³ TABELLA RIASSUNTIVA ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Numero delle stazioni : %2d ³\n"
"\t³ Stazione del primo appoggio : %2d ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Stazione ³ Distanza [m] ³ Diametro [m] ³ Massa [Kg] ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n",N+1,L);
for(i=0;i<=N;i++)

if(i==0)fprintf(stdprn,""
"\t³ %2d ³ ---- ³ ---- ³ %10.3f ³\n",i,m[i]);
else
fprintf(stdprn,""
"\t³ %2d ³ %10.3f ³ %10.3f ³ %10.3f ³\n"
"",i,l[i-1],FI[i-1],m[i]);

fprintf(stdprn,""
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Intervallo di calcolo : %10.3f -%10.3f rad/s ³\n"
"\t³ Incremento di velocit…: %10.3f rad/s ³\n"
"\tÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"
"",OM1,OM2,H);
if(jj==0)fprintf(stdprn,"\n\n\t Non ci sono velocit… critiche.");
else
{
if(jj==1)
{
fprintf(stdprn,"\n\t C'Š una velocit… critica nell'intervallo considerato.");
fprintf(stdprn,"\n\t La velocit… critica Š tra %6.2f e %6.2f rad/s",V[0]-H,V[0]);
fprintf(stdprn," (tra %6.1f e %6.1f rpm)",(V[0]-H)*9.54929,V[0]*9.54929);

}
else
{
fprintf(stdprn,"\n\t Ci sono %d velocit… critiche nell'intervallo considerato.",jj);
for(i=0;i<jj;i++)
{
fprintf(stdprn,"\n\t Velocit… critica %d tra %6.2f e %6.2f rad/s",i+1,V[i]-H,V[i]);
fprintf(stdprn," (tra %6.1f e %6.1f rpm)",(V[i]-H)*9.5492,V[i]*9.5492);
}
}
}

}


------------------------------------------------------------------

Conan ama Lana
27-06-2003, 10:55
up

m4st3rx
27-06-2003, 11:07
un attimo e te lo faccio

m4st3rx
27-06-2003, 11:13
mi da un errore nel compilare ...
sembrerebbe che stdprn non sia dichiarato poi altri 3 errori di cui xo' nn me ne intendo ... :rolleyes:

Athlon
27-06-2003, 11:17
$ gcc prhol.c -o prhol
In file included from prhol.c:2:
/usr/include/conio.h:34:20: _mingw.h: No such file or directory
prhol.c: In function `main':
prhol.c:22: warning: return type of `main' is not `int'
prhol.c: In function `Stampa':
prhol.c:429: `stdprn' undeclared (first use in this function)
prhol.c:429: (Each undeclared identifier is reported only once
prhol.c:429: for each function it appears in.)

non riesco

Conan ama Lana
27-06-2003, 11:22
Ragazzi non so che dire... io non ne capisco di programmazione! E' un programma che so x certo che è stato usato! ... Non c'è niente da fare secondo voi?

Conan ama Lana
27-06-2003, 11:25
Ho provato/tentato un pò a caso con un compilatore free e mi dice


"Miracle C Compiler (r3.2), written by bts.
line 1: #include stdio.h ignored--file not found.
line 2: #include conio.h ignored--file not found.
line 3: #include math.h ignored--file not found.
Compiling e:\documents and settings\ale\documenti\prhol.c

e:\documents and settings\ale\documenti\prhol.c: line 9: Parse Error, expecting `SEP'
'const double PGR=3.141592654'
aborting compile"

forse le librerie stdio.h e le altre sono incluse solo con compilatori professionali tipo visual c?

Athlon
27-06-2003, 11:31
le librerie sono standard , a me non compila perche' non so come dirgli di includere una directory (la \mingw)

ti sposto in programmazione dove c'e' sicuramente qualcuno in grado di farlo

Scoperchiatore
27-06-2003, 11:34
Originally posted by "Athlon"

le librerie sono standard , a me non compila perche' non so come dirgli di includere una directory (la \mingw)

ti sposto in programmazione dove c'e' sicuramente qualcuno in grado di farlo

funziona il ptogramma, solo che si era dimenticato di inizializzare il file stdprn ;)

basta modificare la funzione di Stampa! ;)

void Stampa(void)
{
char i;
FILE *stdprn;

stdprn = fopen("prohl.txt","r+");
fprintf(stdprn,"\n"
"\tÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»\n"
"\tº º\n"
"\tº PROGRAMMA PER IL CALCOLO DELLE VELOCITA' º\n"
"\tº CRITICHE DI UN ROTORE CON IL METODO º\n"
"\tº DI PROHL SEMPLIFICATO º\n"
"\tº º\n"
"\tÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ\n");
fprintf(stdprn,"\n\n"
"\tÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n"
"\t³ TABELLA RIASSUNTIVA ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Numero delle stazioni : %2d ³\n"
"\t³ Stazione del primo appoggio : %2d ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Stazione ³ Distanza [m] ³ Diametro [m] ³ Massa [Kg] ³\n"
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n",N+1,L);
for(i=0;i<=N;i++)

if(i==0)fprintf(stdprn,""
"\t³ %2d ³ ---- ³ ---- ³ %10.3f ³\n",i,m[i]);
else
fprintf(stdprn,""
"\t³ %2d ³ %10.3f ³ %10.3f ³ %10.3f ³\n"
"",i,l[i-1],FI[i-1],m[i]);

fprintf(stdprn,""
"\tÃÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´\n"
"\t³ Intervallo di calcolo : %10.3f -%10.3f rad/s ³\n"
"\t³ Incremento di velocit…: %10.3f rad/s ³\n"
"\tÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n"
"",OM1,OM2,H);
if(jj==0)fprintf(stdprn,"\n\n\t Non ci sono velocit… critiche.");
else
{
if(jj==1)
{
fprintf(stdprn,"\n\t C'Š una velocit… critica nell'intervallo considerato.");
fprintf(stdprn,"\n\t La velocit… critica Š tra %6.2f e %6.2f rad/s",V[0]-H,V[0]);
fprintf(stdprn," (tra %6.1f e %6.1f rpm)",(V[0]-H)*9.54929,V[0]*9.54929);

}
else
{
fprintf(stdprn,"\n\t Ci sono %d velocit… critiche nell'intervallo considerato.",jj);
for(i=0;i<jj;i++)
{
fprintf(stdprn,"\n\t Velocit… critica %d tra %6.2f e %6.2f rad/s",i+1,V[i]-H,V[i]);
fprintf(stdprn," (tra %6.1f e %6.1f rpm)",(V[i]-H)*9.5492,V[i]*9.5492);
}
}
}

è fico, però! :D fa una sacco di cose che non saprei decifrare, ma le fa bene!! :D :D :cool:

Conan ama Lana
27-06-2003, 11:41
me lo puoi mandare a phudkm@tin.it ! :) :) :) io non ho le librerie standard che servono!

Il programma serve per calcolare le velocità critiche di un rotore più altre cosette ..credo.. mi serve x un esame di meccanica applicata alle macchine!

GRAZIE RAGAZZI!!

Scoperchiatore
27-06-2003, 11:47
Originally posted by "Conan ama Lana"

me lo puoi mandare a phudkm@tin.it ! :) :) :) io non ho le librerie standard che servono!

Il programma serve per calcolare le velocità critiche di un rotore più altre cosette ..credo.. mi serve x un esame di meccanica applicata alle macchine!

GRAZIE RAGAZZI!!

credo che il problema sia il compilatore, allora... ;)

se usi Miracle C, sappi che mi ha dato grossi problemi... io ora uso bcc32.... però devi saperlo installare / configurare.. (non è una cosa difficile, però...)

se ti serve una mano, contattami su ICQ! ;)

Conan ama Lana
27-06-2003, 12:17
grazie, intanto potresti spedirmi il programma compilato all'indirizzo email che ho scritto sopra?
Grazie!

Icedguardian
27-06-2003, 12:28
Il programma sembra scritto per il compilatore Borland (avete presente Turbo C) è per questo che con il gcc non compila.

Almeno credo :D

Scoperchiatore
27-06-2003, 12:37
Originally posted by "Conan ama Lana"

grazie, intanto potresti spedirmi il programma compilato all'indirizzo email che ho scritto sopra?
Grazie!

ti amndo l'eseguibile, quindi! :D

è vero, a te ti serve quello! :D:D

Conan ama Lana
27-06-2003, 13:16
Questo programma è una odissea... Mi hai mandato l'allegato .EXE:.. MA OUTLOOK ME LO HA CENSURATO E non c'è verso di aprirlo !! Ma dico io vi sembra normale! E l'help dice addirittura "L'accesso ai file di livello 1 (tra cui i .EXE) è bloccato e non può essere modificato."... cioè, mi mandano un file eseguibile ed io che tra l'altro sono munito di antivirus non posso scegliere se aprirlo o meno??? Ma questo è mostruoso!
Per favore puoi rinominarlo in .qualcosa e rispedirlo...
grazie!

Scoperchiatore
27-06-2003, 13:48
Originally posted by "Conan ama Lana"

Questo programma è una odissea... Mi hai mandato l'allegato .EXE:.. MA OUTLOOK ME LO HA CENSURATO E non c'è verso di aprirlo !! Ma dico io vi sembra normale! E l'help dice addirittura "L'accesso ai file di livello 1 (tra cui i .EXE) è bloccato e non può essere modificato."... cioè, mi mandano un file eseguibile ed io che tra l'altro sono munito di antivirus non posso scegliere se aprirlo o meno??? Ma questo è mostruoso!
Per favore puoi rinominarlo in .qualcosa e rispedirlo...
grazie!

ochiappa! :D:D
;)

MetalMassacre
27-06-2003, 14:59
Originally posted by "Scoperchiatore"



ti amndo l'eseguibile, quindi! :D

è vero, a te ti serve quello! :D:D

Ma Scoperchiatore.. l'exe che crei compilando con la tua macchina è direttamente eseguibile in quella di Conan..? o dovrebbe ricompilarselo necessariamente anche lui? :confused:

Athlon
27-06-2003, 18:51
Originally posted by "MetalMassacre"


Ma Scoperchiatore.. l'exe che crei compilando con la tua macchina è direttamente eseguibile in quella di Conan..? o dovrebbe ricompilarselo necessariamente anche lui? :confused:

finche le due macchine appartengono alla famiglia x86 e il compilatore non ha sfruttato istruzioni proprietarie come SSE o 3Dnow un eseguibile gira perfettamente su ogni macchina

MetalMassacre
28-06-2003, 09:28
Originally posted by "Athlon"



finche le due macchine appartengono alla famiglia x86 e il compilatore non ha sfruttato istruzioni proprietarie come SSE o 3Dnow un eseguibile gira perfettamente su ogni macchina

ahnn..
mi fai due esempi di macchine opposte?
che so... correggimi se sbaglio ..il mac ha un architettura diversa rispetto ai nostri pc desktop..?

Scoperchiatore
28-06-2003, 11:01
Originally posted by "Athlon"



finche le due macchine appartengono alla famiglia x86 e il compilatore non ha sfruttato istruzioni proprietarie come SSE o 3Dnow un eseguibile gira perfettamente su ogni macchina

cavolo, è vero, ho dato per scontato sta cosa!!
non credo che funzioni allora, io ho un'AMD...come te per la precisione! :D:D

se no funziona, mi può contattare tramite e-mela, che gli spiego come mettere bcc32 ;)

Scoperchiatore
28-06-2003, 11:07
Originally posted by "MetalMassacre"



ahnn..
mi fai due esempi di macchine opposte?
che so... correggimi se sbaglio ..il mac ha un architettura diversa rispetto ai nostri pc desktop..?

non serve andare così lontano... il fatto che il Mac abbia un altro OS rispetto alle macchine come la mia o la tua, non è così fondamentale.... il fatto è che hanno componenti e soluzioni diverse per risolvere i problemi di una CPU classica ;)

ad esempio in questo senso sono diversi anche AMD e Intel, e tutte le famiglie dei processori (gli ultra sparc, ad esempio, sono diversi ancora)...

quando un programma compila, genera una serie di istruzioni di linguaggio macchina... queste istruzioni variano molto da processore (e architettura)... per esempio Intel ha istruzioni che permettono di usare un vettore in modo efficiente, cosa che non ha Sparc...

quindi se il compilatore C compila il sorgente (uguale per tutti) in un exe, su di una macchina Pentium, probabilmente userà quelle istruzioni più efficienti per indirizzate i vettori...
se io lo faccio girare su un'architettura diversa (ad esempio Sparc, che non riconosce quel tipo di istruzione/indirizzamento), mi può fare errore (dipende anche dal compilatore e dalla sua "bravura" a distinguere...)

quindi, se Conan ha un AMD, tutto ok... sennò, non si sà! :D:D

PS: per compatibilità, però, alcune istruzioni semi.proprietarie vengono spesso rese eseguibili... ad esempio Sparc ha una parte dedicata alle graphic unit che però sa fare anche istruzioni MMX! ;)

MetalMassacre
28-06-2003, 11:29
Originally posted by "Scoperchiatore"



non serve andare così lontano... il fatto che il Mac abbia un altro OS rispetto alle macchine come la mia o la tua, non è così fondamentale.... il fatto è che hanno componenti e soluzioni diverse per risolvere i problemi di una CPU classica ;)

ad esempio in questo senso sono diversi anche AMD e Intel, e tutte le famiglie dei processori (gli ultra sparc, ad esempio, sono diversi ancora)...

quando un programma compila, genera una serie di istruzioni di linguaggio macchina... queste istruzioni variano molto da processore (e architettura)... per esempio Intel ha istruzioni che permettono di usare un vettore in modo efficiente, cosa che non ha Sparc...

quindi se il compilatore C compila il sorgente (uguale per tutti) in un exe, su di una macchina Pentium, probabilmente userà quelle istruzioni più efficienti per indirizzate i vettori...
se io lo faccio girare su un'architettura diversa (ad esempio Sparc, che non riconosce quel tipo di istruzione/indirizzamento), mi può fare errore (dipende anche dal compilatore e dalla sua "bravura" a distinguere...)

quindi, se Conan ha un AMD, tutto ok... sennò, non si sà! :D:D

PS: per compatibilità, però, alcune istruzioni semi.proprietarie vengono spesso rese eseguibili... ad esempio Sparc ha una parte dedicata alle graphic unit che però sa fare anche istruzioni MMX! ;)

Ma oltre ad Amd ed Intel..gli altri processori "esistono" ancora? Nel senso che ne ho sentito parlare, e letto qualcosa su libri di architetture..ma vengono usati ancora? in che ambiti? sono in commercio? vantaggi?

Scoperchiatore
28-06-2003, 11:41
Originally posted by "MetalMassacre"



Ma oltre ad Amd ed Intel..gli altri processori "esistono" ancora? Nel senso che ne ho sentito parlare, e letto qualcosa su libri di architetture..ma vengono usati ancora? in che ambiti? sono in commercio? vantaggi?

aVOGLIA! :D

sai quante famiglie esistono?? :D

dal libro di Tanenbaum che sto leggendo:

"Intel ha progettato la sua architettura in modo da soddisfare 3 obiettivi principali:

1 - Compatibilità coi modelli precedenti
2 - Compatibilità coi modelli precedenti
3 - Compatibilità coi modelli precedenti

[....]

nelle microistruzioni del Pentium II c'è una modalità per far funzionare il PentiumII come se fosse un 8088! Se gli ingegneri della Intel avessero progettato gli esseri umani, avrebbero previsto di poter attivare una modalità "scimpanzè"...."

:D:D

questo per farti capire come l'architettura Intel ha grossi problemi in quanto per essere compatibile con le vecchie architetture (anche lo 8088!!) ha dovuto veramente fare le cose male... e oggi non si può discostare dalle vecchie scelte di progettazione...

Esistono moltissimi tipi di processori diversi, in quanto le funzioni e l'uso variano moltissimo... ci sono sistemi embedded (lavatrici...:D) che hanno processori,ad esempio, basati sul Java... poi mainframe che hanno architetture che gestiscono bene i multiprocessori...insomma, quanti ne vuoi! :D:D

l'UltraSparc di cui parlavo prima è progettato MOOOLTO meglio delle Intel, solo che i programmatori dovrebbero ricompilare tutto il loro codice per farlo girare lì sopra, in quanto è una macchina totalemente diversa dalle architetture intel... quindi costerebbe tanto lavoro fare ciò... e quindi sono macchine impiegati in settori particolati anche se sono decisamente meglio delle Intel...

gli AMD non li ho studiati, quindi non saprei fare il confronto! :D poi mi documenterò...! :cool: :D

MetalMassacre
28-06-2003, 11:46
Originally posted by "Scoperchiatore"



aVOGLIA! :D

sai quante famiglie esistono?? :D

dal libro di Tanenbaum che sto leggendo:

"Intel ha progettato la sua architettura in modo da soddisfare 3 obiettivi principali:

1 - Compatibilità coi modelli precedenti
2 - Compatibilità coi modelli precedenti
3 - Compatibilità coi modelli precedenti

[....]

nelle microistruzioni del Pentium II c'è una modalità per far funzionare il PentiumII come se fosse un 8088! Se gli ingegneri della Intel avessero progettato gli esseri umani, avrebbero previsto di poter attivare una modalità "scimpanzè"...."

:D:D

questo per farti capire come l'architettura Intel ha grossi problemi in quanto per essere compatibile con le vecchie architetture (anche lo 8088!!) ha dovuto veramente fare le cose male... e oggi non si può discostare dalle vecchie scelte di progettazione...

Esistono moltissimi tipi di processori diversi, in quanto le funzioni e l'uso variano moltissimo... ci sono sistemi embedded (lavatrici...:D) che hanno processori,ad esempio, basati sul Java... poi mainframe che hanno architetture che gestiscono bene i multiprocessori...insomma, quanti ne vuoi! :D:D

l'UltraSparc di cui parlavo prima è progettato MOOOLTO meglio delle Intel, solo che i programmatori dovrebbero ricompilare tutto il loro codice per farlo girare lì sopra, in quanto è una macchina totalemente diversa dalle architetture intel... quindi costerebbe tanto lavoro fare ciò... e quindi sono macchine impiegati in settori particolati anche se sono decisamente meglio delle Intel...

gli AMD non li ho studiati, quindi non saprei fare il confronto! :D poi mi documenterò...! :cool: :D


mmm capisco...
toglimi una curiosita...sono cresciuto con il Commodore xxx, che cpu montava?? se lo avessi ancora lo aprirei !

Scoperchiatore
28-06-2003, 11:58
Originally posted by "MetalMassacre"




mmm capisco...
toglimi una curiosita...sono cresciuto con il Commodore xxx, che cpu montava?? se lo avessi ancora lo aprirei !

boh? :D:D

l'architettura sarà stata fatta sul momento per le necessità dell'azienda.. ;) non credo montasse processori particolari, ne hanno fatto uno (di cui si dovrebbero trovare le specifiche tecniche...) e poi l'hanno fatto evolvere aumentado la memoria, e poche altre cose... in realtà è lo stesso chip dell'Atari, che si è evoluto fino al Commodore, a quanto so io ;)

Conan ama Lana
28-06-2003, 12:04
Grazie Scoperchiatore, Il programmi funziona benissimo sul mio Duron 750... però non ho capito una cosa... se 'in teoria' avessi avuto un Intel potevano esserci problemi di compatibilità? E allora tutti i programmi che si trovano a giro già compilati come fanno a funzionare indifferentemente su piattaforma AMD o Intel?

MetalMassacre
28-06-2003, 13:17
Originally posted by "Conan ama Lana"

Grazie Scoperchiatore, Il programmi funziona benissimo sul mio Duron 750... però non ho capito una cosa... se 'in teoria' avessi avuto un Intel potevano esserci problemi di compatibilità? E allora tutti i programmi che si trovano a giro già compilati come fanno a funzionare indifferentemente su piattaforma AMD o Intel?

Hanno il codice ottimizzato per istruzioni diverse..? o na roba simile?
..suppongo..http://forum.hwupgrade.it/faccine/63.gif
scooop helppp...!!! (ero pure io negli hwmetallerzz.. ricordi?)

Athlon
28-06-2003, 18:21
Originally posted by "Conan ama Lana"

Grazie Scoperchiatore, Il programmi funziona benissimo sul mio Duron 750... però non ho capito una cosa... se 'in teoria' avessi avuto un Intel potevano esserci problemi di compatibilità? E allora tutti i programmi che si trovano a giro già compilati come fanno a funzionare indifferentemente su piattaforma AMD o Intel?

Praticamente TUTTI programi che si trovano in giro sono compilati per 386 , per questo che non hanno alcun problema a girare su tutte le mecchine.

Le istruzioni proprietarie (SSE-SSE2-3DNow!-E33DNow!) vengono usate in POCHISSIME occasioni , in quel caso il programma principale chiama e manda in esecuzione un modulo diverso a seconda del tipo di CPU che rileva.

Se non ricordo male WinXP dovrebbe essere leggermente aggiornato ed essere compilato per CPU di classe Pentium (586)

Scoperchiatore
28-06-2003, 18:51
Originally posted by "MetalMassacre"



Hanno il codice ottimizzato per istruzioni diverse..? o na roba simile?
..suppongo..http://forum.hwupgrade.it/faccine/63.gif
scooop helppp...!!! (ero pure io negli hwmetallerzz.. ricordi?)

si, ricordo, una permanenza lampo! :D:D

torna nel gruppo, siamo diventati ancora di più...!! :cool: :cool: :D

la risposta l'ha data Athlon per me...;)

considerate che le macchine Intel dal 386 in poi non hanno fatto cambiamenti sostanziali all'architettura... praticamente hanno sempre aggiunto cose (come nuove pipeline, unità dedicate, controllori, indirizzi aggiuntivi, etc....) che permettessero di ottimizzare l'esecuzione delle istruzioni.... però a tutti gli effetti i cambiamenti veri sono stati pochissimi!

AMD non so su che sia basato, ma penso che il suo successo commerciale sia dovuto al fatto che ricalca in qualche modo l'ISA Intel in modo di non avere problemi con la compatibilità... certo che però se fosse così sarebbe una cosa brutta in quanto il linguaggio macchina Intel è parecchio bruttino e pochissimo ortogonale (in soldoni, significa che ci mette più tempo a fare le cose, e che per farle devi scrivere codice complicato!! :muro: :D )

cmq, dato che Conan ha un Durone, non vi sono problemi di sorta...! :cool: