|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
[C]Errore relativo
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int n,i, diff;
puts("Numbers :");
scanf("%d", &n);
int res[n], res_d[n];
puts("\tGauss Formula");
for(i = 0; i < n; i++)
{
res[i] = (i*(i+1))/2;
printf("( %d ) = %d\n", i , res[i]);
}
puts("\tAsinptotic formula");
for(i = 0; i < n;i++)
{
res_d[i] = i*i/2;
printf("( %d ) = %d\n", i , res_d[i]);
}
puts("\tError");
// for(i = 0; i < n;i++)
// {
// diff = (int)(abs(res_d[i]-res[i])/res[i])*100;
// printf("( %d ) = %d\n", i , diff);
// }
return 0;
}
Ciao a tutti e buona pasquetta.
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
Temo che non sia possibile, o almeno non standard dichiarare array dinamici in questo modo:
Codice:
int res[n], res_d[n]; Codice:
int *res = (int*)malloc(n * sizeof(int)); int *res_d = (int*)malloc(n * sizeof(int)); ... free(res); free(res_d); |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Feb 2006
Messaggi: 134
|
Quote:
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Ho sistemato i cicli partendo da 1 e il malloc ma..
Ora mi da il primo 100 di errore e poi sempre 0... non riesco a capire ma sembra che l'errore sia qui Codice:
diff = (int)(abs(res_d[i]-res[i])/res[i])*100;
printf("( %d ) = %d\n", i , diff);
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go Ultima modifica di The_ouroboros : 13-04-2009 alle 19:36. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2007
Messaggi: 263
|
Prova a scrivere:
Codice:
diff = (int)((abs(res_d[i]-res[i])/(float)res[i])*100); |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
|
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void write_out(int n, FILE *file);
int main()
{
int n;
puts("Numbers: ");
FILE *file = fopen("out.txt","a+");
scanf("%d", &n);
fprintf(file,"## Difference between Gauss' formula and asimptotic formula for %d numbers ## \n", n);
if(n > 80) { puts("Error: Out of range!"); fclose(file); getchar(); return 0; }
write_out(n, file);
fclose(file);
return 0;
}
void write_out(int n, FILE *file)
{
int i, diff;
int *res = (int *)malloc(n * sizeof(int)),
*res_d = (int *)malloc(n * sizeof(int));
fprintf(file,"\tGauss Formula for %d numbers\n", n);
for(i = 1; i < n; i++)
{
res[i] = (i*(i+1))/2;
fprintf(file,"( %d ) = %d\n", i , res[i]);
}
fprintf(file,"\tAsinptotic formula for %d numbers\n", n);
for(i = 1; i < n;i++)
{
res_d[i] = i*i/2;
fprintf(file,"( %d ) = %d\n", i , res_d[i]);
}
fprintf(file,"\tError for %d numbers\n", n);
for(i = 1; i < n;i++)
{
diff = ((abs(res_d[i]-res[i])/(float)abs(res[i]))*100);
fprintf(file,"( %d ) = %d%% \n", i , diff);
}
free(res);
free(res_d);
}
// :-
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
Quote:
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:28.




















