Please convert this c program into matlab code
Show older comments
#include<stdio.h> #include<math.h> int main() { float x[10],y[15][15]; int n,i,j; printf("Enter n : "); scanf("%d",&n); printf("X\tY\n"); for(i = 0;i<n;i++){ scanf("%f %f",&x[i],&y[i][0]); } //forward difference table for(j=1;j<n;j++) for(i=0;i<(n-j);i++) y[i][j] = y[i+1][j-1] - y[i][j-1]; printf("\n***********Forward Difference Table *********\n"); //display Forward Difference Table for(i=0;i<n*2-1;i++) { int indx = i/2; printf("\t"); if(!(i%2)) printf("%.2f",x[indx]); int j_max = (n>i)? i : n*2-i-1; for(j=0;j<=j_max;j++) { printf("\t"); if(i%2 == j%2) printf("%.2f",y[indx-j/2][j]); } printf("\n"); }
return 0; }
Answers (2)
Walter Roberson
on 26 Nov 2020
0 votes
That code cannot be converted to MATLAB: it depends on standard input for reading from the user, but MATLAB does not have standard input.
4 Comments
Walter Roberson
on 26 Nov 2020
My guess at the formatting of the original code would be
#include<stdio.h>
#include<math.h>
int main()
{
float x[10],y[15][15];
int n,i,j;
printf("Enter n : ");
scanf("%d",&n);
printf("X\tY\n");
for(i = 0;i<n;i++)
{
scanf("%f %f",&x[i],&y[i][0]);
} //forward difference table
for(j=1;j<n;j++)
for(i=0;i<(n-j);i++)
y[i][j] = y[i+1][j-1] - y[i][j-1];
printf("\n***********Forward Difference Table *********\n"); //display Forward Difference Table
for(i=0;i<n*2-1;i++)
{
int indx = i/2;
printf("\t");
if(!(i%2))
printf("%.2f",x[indx]);
int j_max = (n>i)? i : n*2-i-1;
for(j=0;j<=j_max;j++)
{
printf("\t");
if(i%2 == j%2)
printf("%.2f",y[indx-j/2][j]);
}
printf("\n");
}
return 0;
}
(Remember that in C, there is no explicit end for equivalent unless you deliberately use { } to group statements, so the for i, for j, y[i][j] set of lines is a complete double-nested loop that does not extend further -- the printf after is not inside the loops.)
PULAK Kumer
on 26 Nov 2020
Edited: Walter Roberson
on 26 Nov 2020
Walter Roberson
on 26 Nov 2020
OFFSET = 1;
for i=0 : n*2-2
indx = floor(i/2);
fprintf("\t");
if mod(i,2) == 0
fprintf("%.2f",x(indx+OFFSET));
end
if n > i
j_max = i;
else
j_max = n*2-i-1;
end
for j = 0 : j_max
fprintf("\t");
if mod(i,2) == mod(j,2)
fprintf("%.2f", y(indx-j/2+OFFSET, j+OFFSET));
end
printf("\n");
end
end
PULAK Kumer
on 26 Nov 2020
Categories
Find more on MATLAB in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!