C and C++

Moderators: None (Apply to moderate this forum)
Number of threads: 28691
Number of posts: 94711

This Forum Only
Post New Thread
Single Post View       Linear View       Threaded View      f

Report
desperately need help in code in c++ and fitting functions in a frame Posted by crazzy_devil on 1 May 2010 at 4:17 PM
i am soryy my english is very bad but ill try my best to explain.i need help with my c++ assignemnt urgently.

i want to create a frame and fit in this histograph(ATTACHED PICTURE BELOW) which i made with the help of the container, where the x-axsis is the number from like eksempet 0-10 and the y-axis is telling me how many numbers there are from 0-10. But i cant seem to code it (given below). its in the number its gettin from a container where the container read it from a indata.txt file. the diagram created is just trying to make the x and y axis and put it in a frame. SO my question really is how to create and fit the function in the frame of my histogram(ATTACHED PICTURE BELOW) and how to code it. plzzz can someone help me!! :'(

ps: plz scroll down and check teh histograph picture i have attached






#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <fstream>
using namespace std;
void funk();
int getsum(vector<int> vec);
int getsize(vector<int> vec);
int getmax(vector<int> vec);
int getmin(vector<int> vec);
void getinterval(vector<int> vec);

void funk() {
vector<int> vec;
//int y;
ifstream in("Indata.txt");

int x, y, y2, y3, y4;
while (in>>x) {
vec.push_back(x);
}

y=vec.size();

y=getsum(vec);
y2=getsize(vec);
y3=getmax(vec);
y4=getmin(vec);
cout<<"\nsum = "<<y<<"\nsize = "<<y2<<"\nMax = "<<y3<<"\nmin = "<<y4;
getinterval(vec);
}

int getsum(vector<int> vec) {
int sum=0;
for (unsigned int i=0; i<vec.size(); i++) {

sum+=vec[i];
}

return sum;
}
int getsize(vector<int> vec) {

int sz;
sz=vec.size();

return sz;
}

int getmax(vector<int> vec) {
int max=0;

for (unsigned int i=0; i<vec.size(); i++) {
if (max<vec[i])
max=vec[i];
}

return max;
}

int getmin(vector<int> vec) {

int min=100000;

for (unsigned int i=0; i<vec.size(); i++) {
if (min>vec[i])
min=vec[i];
}

return min;
}

void getinterval(vector<int> vec) {
int count1=0, count2=0, count3=0, count4=0, count5=0, count6=0, count7=0,
count8=0, count9=0;

for (unsigned int i=0; i<vec.size(); i++) {

if (vec[i]>0 && vec[i]<=10) {
count1++;
} else if (vec[i]>10 && vec[i]<=20) {
count2++;
} else if (vec[i]>20 && vec[i]<=30) {
count3++;
} else if (vec[i]>30 && vec[i]<=40) {
count4++;
} else if (vec[i]>40 && vec[i]<=50) {
count5++;
} else if (vec[i]>60 && vec[i]<=70) {
count6++;
} else if (vec[i]>70 && vec[i]<=80) {
count7++;
} else if (vec[i]>80 && vec[i]<=90) {
count8++;
} else if (vec[i]>90 && vec[i]<=100) {
count9++;
}
}

int array[10]= { count1, count2, count3, count4, count5, count6, count7,
count8, count9 };
int max=0;
int y=10, t=10, t2=0,t3=10;
cout<<endl<<endl;
for (unsigned int i=0; i<9; i++) {
y-=1;

cout<<y<<endl;
if (max<array[i]) {
max=array[i];
}

}

cout<<endl<<endl;

for (unsigned int i=0; i<9; i++) {

for (; max>0; max--) {
unsigned int i;
for (i = 0; i < 9; i++)

if (array[i] >= max)
cout << "**** ";
else
cout << " ";
cout << endl;

}
}
cout<<endl;
for (unsigned int i=0; i<10; i++) {
cout<<t<<" ";
t+=10;
}
cout<<endl;

for (unsigned int i=0; i<10; i++) {

cout<<t2<<" ";
t2=t3+1;
t3+=10;
}

}

int main() {
vector<int> vec;
funk();

return 0;
}

Attachment: histo.JPG (83769 Bytes | downloaded 78 times)
Report
Re: need help in code in c++ and fitting functions in a frame Posted by AsmGuru62 on 2 May 2010 at 5:07 AM
First, your array of counts is missing one value - there should be ten values and you have only nine.

Second, the tasks like that is better done with arrays - instead of these grouped IF() statements you should have built the FOR() statement with clever limits:

int lowLimit = 0;
int counts [10] = {0};

for (int i=0; i<10; i++, lowLimit += 10)
{
  if ((value >= lowLimit) && (value < (lowLimit+10))) ++(counts [i]);
}

Third, about printing. You need a function, which will print one line from the chart. Line from the chart is based on a count indicated on the left side of chart (it begins with 60). So, the count is a parameter to the function as well as the array of counts. The function itself is a loop where you check every count against that value of a parameter:
//
// pseudo-code
//
void PrintHistogramLine (int value, int count [])
{
  <print formatted value>
  for (int i=0; i<10; i++)
  {
    if (count [i] < value)  <print 5 blanks>;
    else                    <print 1 blank and 4 stars>
  }
  <print end of line>
}

...

PrintHistogramLine (60, count);
PrintHistogramLine (55, count);
PrintHistogramLine (50, count);
PrintHistogramLine (45, count);
PrintHistogramLine (40, count);
//
// Or better make a loop here ^^^
//
Report
Re: need help in code in c++ and fitting functions in a frame Posted by crazzy_devil on 3 May 2010 at 1:28 AM
could someone juss code the c++ for me?



 

Recent Jobs

Official Programmer's Heaven Blogs
Web Hosting | Browser and Social Games | Gadgets

Popular resources on Programmersheaven.com
Assembly | Basic | C | C# | C++ | Delphi | Flash | Java | JavaScript | Pascal | Perl | PHP | Python | Ruby | Visual Basic
© Copyright 2011 Programmersheaven.com - All rights reserved.
Reproduction in whole or in part, in any form or medium without express written permission is prohibited.
Violators of this policy may be subject to legal action. Please read our Terms Of Use and Privacy Statement for more information.
Operated by CommunityHeaven, a BootstrapLabs company.