In: Computer Science
Using JAVA
The following code is able to read integers from a file that is called "start.ppm" onto a 3d array called "startImage".
Implement the code by being able to read from another file (make up any file name) and save the data onto another 3d array lets say you call that array "finalImage".
The purpose of this will be to add both arrays and then get the average
Save the average onto a separte 3darray,lets say you call it "middlearray"
Then add startImage and middlearray and get the average then save it to another array called "fourtharray"
Then add finalImage and middle array and get the average then save it to another array called "fiftharray".
Print all 5 arrays
I can not submit data file because there are about 667,000 integers on the files. The file is from an image that got converted onto a ppm file. I don't really see the purpose in adding the file to this question either way. The code below is already capalbe of reading from one file i just need to code that will allow me to read from a different file (lets say we call that file "final.ppm". and then ansew the questions above.
import
java.util.Scanner;
import java.io.*;
public class P1
{
public static void main(String[] args) throws IOException
{
final int ROW=1000;
final int COL=667;
File file= new File("start.ppm");
Scanner inputF= new Scanner(file);
int[][][] startImage= new int[ROW][COL][3];
int row=0, col=0;
int line=1;
while (inputF.hasNext())
{
if(line<=4)
{
inputF.nextLine();
line++;
}
else
{
line+=3;
if (col< COL)
{
startImage[row][col][0]=inputF.nextInt();
startImage[row][col][1]=inputF.nextInt();
startImage[row][col][2]=inputF.nextInt();
col++;
}
else
{
row++;
col=0;
startImage[row][col][0]=inputF.nextInt();
startImage[row][col][1]=inputF.nextInt();
startImage[row][col][2]=inputF.nextInt();
col++;
}
}
}
inputF.close();
for(row=0;row {
for(col=0;col {
for(int color=0;color<3;color++)
{
System.out.println(startImage[row][col][color]);
}
}
}
}
}
import java.util.Scanner; import java.io.*; public class P1 { static final int ROW = 1000; static final int COL = 667; public static void readImage(int[][][] startImage, String fileName) { Scanner inputF = new Scanner(fileName); int row = 0, col = 0; int line = 1; while (inputF.hasNext()) { if (line <= 4) { inputF.nextLine(); line++; } else { line += 3; if (col < COL) { startImage[row][col][0] = inputF.nextInt(); startImage[row][col][1] = inputF.nextInt(); startImage[row][col][2] = inputF.nextInt(); col++; } else { row++; col = 0; startImage[row][col][0] = inputF.nextInt(); startImage[row][col][1] = inputF.nextInt(); startImage[row][col][2] = inputF.nextInt(); col++; } } } inputF.close(); } public static void printImage(int[][][] startImage) { for (int row = 0; row < ROW; row++) { for (int col = 0; col < COL; col++) { for (int color = 0; color < 3; color++) { System.out.println(startImage[row][col][color]); } } } } public static int[][][] getAverage(int[][][] p1, int[][][] p2) { int[][][] avgImage = new int[ROW][COL][3]; for(int i=0; i<ROW; i++) { for(int j=0; j<COL; j++) { for(int k=0; k<3; k++) { avgImage[i][j][k] = p1[i][j][k] + p2[i][j][k]; } } } return avgImage; } public static void main(String[] args) throws IOException { int[][][] startImage = new int[ROW][COL][3]; readImage(startImage, "start.ppm"); printImage(startImage); int[][][] finalImage = new int[ROW][COL][3]; readImage(startImage, "final.ppm"); printImage(startImage); int[][][] middlearray = getAverage(startImage, finalImage); printImage(middlearray); int[][][] fourtharray = getAverage(startImage, middlearray); printImage(fourtharray); int[][][] fiftharray = getAverage(finalImage, middlearray); printImage(fiftharray); } }
************************************************** I have converted your code to modules and hence, The main method is very clean now.. And you can add more functionality if needed. Thanks for your question. We try our best to help you with detailed answers, But in any case, if you need any modification or have a query/issue with respect to above answer, Please ask that in the comment section. We will surely try to address your query ASAP and resolve the issue.
Please consider providing a thumbs up to this question if it helps you. by Doing that, You will help other students, who are facing similar issue.