0

Hey again! ;)

This time I have this program which is supposed to read some stream file called "numbers.dat" which has the numbers 1 up to 10.
I get the reading, but the thing is in the for loop I want to add the numbers in circles.
For example:
1 2 3 4 5 6 7 8 9 10
I want the number 1 and number 10 to be added, then number 2 and number 9 to be added.
This addition I want to write it in the stream file called "numbers2.dat"
The program does add the numbers, but in parallel: 1+2 = 3, then 3+4=7

Here is the code.

#include <fstream>
  #include <iostream>
  #include <string>
 

 using namespace std;

 int main() {

  int size = 100;
  int pos = 0;
  int largo = 0;
  int dato, dato2, circulo, i;
  int array[size];
  
 ifstream read("numbers.dat");
 ofstream write("numbers2.dat");



read >> dato >> dato2;

  while (!read.eof()) {



   array[pos] = dato; // first number of the file
   array[size-pos-1]= dato2; // last number of the file
   
  pos++;
  largo += 2; // how many elements are in the file

  read >> dato >> dato2;


 }


 circulo = largo/2; // the actual number of circles

 write << "LA SUMA DE TODOS LOS CIRCULOS ES: " << endl;

 for (i = 0; i <= circulo; i++) {

 write << "\ncirculo # " << (i+1) << ": " << dato+dato2; // write to "numbers2.dat" the addition in circles

 }


  return 0;

 }

So, could you guys give me a hint or is there some way to make the addition in circles? I think I have it already but there's some kind of mistake somewhere. Thanks!

3
Contributors
7
Replies
8
Views
8 Years
Discussion Span
Last Post by lmastex
0

1) the read loop is all screwed up

int pos = 0;
while( read >> array[pos] )
   pos++;
// now that you have all the numbers in an array, just add them
// up the way you want them
0

in adition, change int size = 100; to const int size = 100; size of an array must be a constant known at compile time.

0

1) the read loop is all screwed up

int pos = 0;
while( read >> array[pos] )
   pos++;
// now that you have all the numbers in an array, just add them
// up the way you want them

You mean I need to replace this with the whole read loop? And what about the dato and dato2
int variables? I want them to read them (the numbers in the file) and save them into these variables.

0

you don't need dato and dato2 because the code you posted does nothing with them. You could modify the code I posted like this:

int pos = 0;
while( read >> array[pos]  >> array[size-pos-1])
{
   pos++;
   largo += 2; // how many elements are in the file
}
// now that you have all the numbers in an array, just add them
// up the way you want them
0

Ok, I replaced the code with the one you gave me. I have this now:

#include <fstream>
  #include <iostream>
  #include <string>
 

 using namespace std;

 int main() {

  int i, circulo;
  const int size = 100;
  int pos = 0;
  int largo = 0;
  int array[size];
  
 

 ifstream read("numbers.dat");
 ofstream write("numbers2.dat");


  while( read >> array[pos]  >> array[size-pos-1])

{
   pos++;

   largo += 2;


}


 circulo = largo/2;

 write << "LA SUMA DE TODOS LOS CIRCULOS ES: " << endl;


 for (i = 0; i <= circulo; i++) {

 
 write << "\ncirculo # " << (i+1) << ": " << array[pos]+array[size-pos-1];

 }


  return 0;

 }

This is what I get in the output of the file:

LA SUMA DE TODOS LOS CIRCULOS ES:

circulo # 1: 6822532
circulo # 2: 6822532
circulo # 3: 6822532
circulo # 4: 6822532
circulo # 5: 6822532
circulo # 6: 6822532

What am I doing wrong?

0

>>write << "\ncirculo # " << (i+1) << ": " << array[pos]+array[size-pos-1];

Variable pos is never changed. I think you should use the loop counter instead of pos.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.