I got a simple cout statement below. And I want to print 5 lines at a time (the output below). I am new to C++. The 3 dots just a symbol to see the output
int count = 0;
cout << "Print line:" << endl;
for (int i = 0; i < 10; i++){
cout << i << endl;
count++;
if (count > 6){ //if (count % 6 == 0) this is wrong also btw
cout << i << " ..." << endl;
continue;
}
}
The output of the program above is
Print line:
0
1
2
3
4
5
6
6 ...
7
7 ...
8
8 ...
9
9 ...
Expected output
Print line:
0
1
2
3
4
5
Print line
6
7
8
9
#include <iostream>
using namespace std;
int main() {
for (int i = 0; i < 10; i++) {
if (i % 5 == 0)
cout << "Print Line\n";
cout << i << endl;
}
}
for (int i = 0; i < 10; i++){
if (i % 6 == 0)
cout << "Print line:" << endl;
cout << i << endl;
}
You need to first check if each loop satisfies the condition i%6==0 or not and then print the number. If the condition is true, then the line will be printed.
Another way to do this to use an extra loop;
for ( int i = 0; i < 20; i += 6 )
{
for ( int n = i; n < i + 6; n++ )
{
if ( n > 20 ) break;
std::cout << n << std::endl;
}
std::cout << "print line" << std::endl;
}
Related
I am stuck somewhere(have some problem with the random number) and I know it, but can't find where to fix...
Two void functions must be used; void randomNumbers(int numbers[][3], int rowSize), void randomCounts(int numbers[][3], int size, int counts[])
I can't put images to show how it should and does look like in .exe files as I just signed up today ...... Hope this works ;(
Expected Result:
//========================
// 7 6 5
// 2 1 1
// 6 7 2
// 9 3 3
// 8 1 1
//========================
//Ran. Number: 0 1 2 3 4 5 6 7 8 9
//Frequency(Counts): 0 4 2 2 0 1 2 2 1 1
What I DID:
//========================
// 0 0 0
// 0 0 0
// 0 0 0
// 0 0 0
// 0 0 0
// ========================
// Ran. Number: 0 1 2 3 4 5 6 7 8 9
// Frequency(Counts): 001A148D
Code:
#include <iostream>
#include <iomanip>
#include <ctime>
using namespace std;
const int COL = 3;
const int SIZE = 5;
void randomNumbers(int inumbers[][3], int rowSize) {
int num = 0;
for (int i = 0; i < 10; i++) {
num = rand() % 10;
}
}
void randomCounts(int inumbers[][3], int size, int counts[]) {
for (int i = 0; i < 10; i++) {
counts[i]++;
cout << setw(5) << counts[i];
}
}
int main(){
int random[SIZE][COL] = {};
srand((unsigned)time(NULL));
cout << endl;
cout << "==================" << endl;
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < COL; j++) {
cout << setw(5) << random[i][j];
if (j == COL - 1) {
cout << endl;
}
}
}
cout << "==================" << endl;
cout << endl;
cout << "Ran. Number: " << setw(5) << "0" << setw(5) << "1" << setw(5) << "2" << setw(5) << "3" << setw(5) << "4" << setw(5) << "5" << setw(5) << "6" << setw(5) << "7" << setw(5) << "8" << setw(5) << "9" << endl;
cout << "Frequency(Counts): " << randomCounts << endl;
return 0;
}
Ok, so why are you getting 0, 0, 0.... Because you never actually call your functions. You initialize your array:
int random[SIZE][COL] = {};
Then you print it here:
cout << setw(5) << random[i][j];
And nowhere in between do you set anything into this array. When you do start calling your functions you will find they don't work, due to copying the input and doing some undefined behaviour. When you have debugged this a bit more, ask a new question.
I am a student who is new to c++ and wondering if there was a way to get my program to display more than 1 answer if they are the same. I am writing a c++ program for a class,using a two dimensional array, as well as several others to track sales amount at a car company. At the end of the program, the salesperson with the most and least amounts as well as the most amount of cars and least amount of cars are displayed. I have the program running mostly correctly, only problem I am having is getting it to display if one of the results has two answers.
My input data is as follows
Car S A L E S P E R S O N
Model 1 2 3 4 5 6 7 8 Total Average
________________________________________________________________________________________
1 8 5 2 4 1 1 1 3 ?? ??
2 5 7 2 2 3 4 3 1 ?? ??
3 5 1 1 0 0 0 5 5 ?? ??
4 2 3 2 1 2 2 2 3 ?? ??
5 7 2 0 0 0 1 4 1 ?? ??
6 2 2 2 2 3 4 3 2 ?? ??
7 2 1 2 3 3 1 2 1 ?? ??
8 5 8 1 1 2 1 2 1 ?? ??
9 4 8 2 1 1 2 3 2 ?? ??
10 1 4 4 4 2 4 2 4 ?? ??
__________________________________________________________________________
Total ?? ?? ?? ?? ?? ?? ?? ?? ??
Average ?? ?? ?? ?? ?? ?? ?? ?? ??
based on the data, car models 5 and 7 sold the least , so 2 answers need to be displayed.
based on the data sales people 1 and 2 sold the most so again there needs to be 2 answers displayed.
would anyone be able to advise me or give me a little help with this part?
// Lab09car.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
int main()
{
ifstream InFile;
int CarModel;
int NumCarModels = 10;
double CarModelSum[10], SalesPersonSum[8];
double CarModelAvg[10], SalesPersonAvg[8];
double CarModelAverage;
int SalesPerson;
int NumSalesPerson = 8;
int CarModelCount = 0;
int MaxModel, MinModel, MaxSalesPerson, MinSalesPerson;
InFile.open("E:/CSC133-01/CSC133LabAssignments/Lab09/Lab09inp.dat");
double CarSales[12][10];
int TotalTotals{};
double TotalAverages{};
cout << "\n________________________________________________________________________________________" << endl;
cout << "\n \t\t Automobile Sales Report For The Month Of June";
cout << "\n \t\t __________________________________________________";
cout << "\n \t\t Report Prepared By: " << endl;
cout << "\n Car \t\t\t\t SALESPERSON";
cout << "\n Model \t 1\t 2\t 3\t 4\t 5\t 6\t 7\t 8\t Total\t Average";
cout << "\n________________________________________________________________________________________" << endl;
//reads data into matrix from file
for (CarModel = 0;CarModel < NumCarModels; CarModel++)
{
for (SalesPerson = 0;SalesPerson < NumSalesPerson;SalesPerson++)
{
InFile >> CarSales[CarModel][SalesPerson];
}
}
for (int i = 0;i < 10;i++)
{
CarModelSum[i] = 0;
for (int j = 0;j < 8;j++)
CarModelSum[i] += CarSales[i][j];
CarModelAvg[i] = (CarModelSum[i] * 1.0) / 8;
}
for (int i = 0;i < 8;i++)
{
SalesPersonSum[i] = 0;
for (int j = 0;j < 10;j++)
SalesPersonSum[i] += CarSales[j][i];
SalesPersonAvg[i] = (SalesPersonSum[i] * 1.0) / 10;
}
for (int i = 0;i < 10;i++)
{
cout << "\n " << (i + 1);
for (int j = 0;j < 8;j++)
cout<<setprecision(0) << "\t " << CarSales[i][j];
cout << " \t " << CarModelSum[i] << "\t " << fixed << setprecision(2) << CarModelAvg[i];
}
cout << "\n________________________________________________________________________________________" << endl;
cout << "\n Total ";
for (int i = 0;i < 8;i++)
{
cout << "\t " <<setprecision(0)<< SalesPersonSum[i];
}
for (int i = 0;i < 8;i++)
{
TotalTotals += SalesPersonSum[i];
}
cout << "\t" << setw(4)<< TotalTotals;
cout << "\n Average ";
for (int i = 0;i < 8;i++)
{
cout << fixed << setprecision(2) << SalesPersonAvg[i] << "\t ";
}
for (int i = 0;i < 8;i++)
{
TotalAverages += SalesPersonAvg[i];
}
TotalAverages = TotalAverages / 8;
cout << "\t"<<setw(5)<<TotalAverages;
MaxModel =0, MinModel = 0;
for (int i = 1;i < 10;i++)
{
if (CarModelSum[i] > CarModelSum[MaxModel])
MaxModel = i;
if (CarModelSum[i] < CarModelSum[MinModel])
MinModel = i;
}
MaxSalesPerson = MinSalesPerson = 0;
for (int i = 1;i < 8;i++)
{
if (SalesPersonSum[i] > SalesPersonSum[MaxSalesPerson])
MaxSalesPerson = i;
if (SalesPersonSum[i] < SalesPersonSum[MinSalesPerson])
MinSalesPerson = i;
}
cout << "\n________________________________________________________________________________________" << endl;
cout <<setprecision(0)<< "\n The Car Model that sold the most number of cars is the Model " << (MaxModel + 1) << ". There were " << CarModelSum[MaxModel] << " sold";
cout << "\n The Car Model that sold the least number of cars is the Model " << (MinModel + 1) << ". There were " << CarModelSum[MinModel] << " sold";
cout << "\n The Salesperson who sold the most number of cars is " << (MaxSalesPerson + 1) << ". That person sold " << SalesPersonSum[MaxSalesPerson] << " cars";
cout << "\n The Salesperson who sold the least number of cars is " << (MinSalesPerson + 1) << ". That person sold " << SalesPersonSum[MinSalesPerson] << " cars";
cout << "\n________________________________________________________________________________________" << endl;
}
Instead of storing the index of the MaxModel, store the actual value. Then, in another loop, print all models with that value.
MaxModel = CarModelSum[0], MinModel = CarModelSum[0];
for (int i = 1; i < 10;i++) {
if (CarModelSum[i] > MaxModel)
MaxModel = CarModelSum[i];
if (CarModelSum[i] < MinModel)
MinModel = CarModelSum[i];
}
Then, print the ones that match:
cout << "The Car Model(s) that sold the most number of cars: ";
for (int i = 0; i < 10;i++) {
if (CarModelSum[i] == MaxModel) {
cout << i << " "
}
}
cout << endl << "There were " << MaxModel << " sold each";
And do the same for the other values.
As far as I'm concerned, you may need two loops. For example:car models 5 and 7 sold the least , so 2 answers need to be displayed. First of all we should need to get the value "a" of the least sales . And then we will get car models 5 and 7 sold the least.
Here is a simple code: We enter a set of data ,like{1,2,3,4,3,2,5,1,2,3,}. We can get the minimum value is "1". And then we can get the sequence of corresponding numbers "1" is "0" and "7"
#include "pch.h"
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int a[10];
int min;
int min_n;
int i;
for (i = 0; i < 10; i++)
{
cin >> a[i];
}
min = a[0];
for (i = 0; i < 10; i++)
{
if (a[i] <= min) { min = a[i]; min_n = i; }
}
cout << "min=" << min << endl;
cout << "——————————————————————" << endl;
int *p;
p = a;
for (i = 0; i < 10; i++)
{
if (*p == min)
{
cout << i << endl;
}
p++;
}
return 0;
}
Hope this code is helpful to you.
I am having some troubles with this problem presented from my lab. My goal is to produce an addition table that looks something like this -
(From range(1-5)) :
+ 1 2 3 4 5
1 2 3 4 5 6
2 3 4 5 6 7
3 4 5 6 7 8
4 5 6 7 8 9
5 6 7 8 9 10
Mine is looking like this, however :
+ 1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
My code looks like this :
if (choice == ADD) {
cout << "+";
for (int i = 0; i < max; i++) {
cout << "\t";
for (int j = min; j <= max; j++) {
cout << i + j << "\t";
}
}
}
(For reference, int max = maximum number in range, int min = minimum number in range, and choice is the decision for user to do either an addition or multiplication table). How can I change my code to fit the proper format? I can't seem to figure it out. Any hints/help would be greatly appreciated :)
#include <iostream>
using namespace std;
int main(){
int max = 5;
int min = 1;
if (true){
cout << "+\t";//print out the initial +
for(int i = min; i <= max; i++) cout << i << "\t";//print out the entire first row
cout << "\n"; //start the next row
//here is the main loop where you do most of the logic
for(int i = min; i <= max; i++){
cout << i << "\t"; //this prints out the first column of numbers
for(int j = min; j <=max; j++){
cout << j+i << "\t"; //this line fills in the body of your table
}
cout << "\n";//creates the space between each row
}
}
}
This code builds the table as explained:
for (int i = 0; i <= max; i++) {
if (i == 0)
cout << '+';
else
cout << i;
cout << '\t';
for (int j = min; j <= max; j++) {
cout << i + j << '\t';
}
cout << '\n';
}
Tip: when you want to print only a character, it is more efficient to use single quotes like '+' or '\t'. Double quotes are more expensive because they represent a const char*.
I have completed code that works for the majority of cases for outputting odd numbers between two integers in C++. However it doesn't work for negative numbers and/or if the two values are less than 3 in difference from one another (e.g. it works if the two numbers are 2 & 5, but does not work if the two numbers are 2 & 4).
I know that it is a cause of my code which adds 2 every time the while loop iterates, I'm just not sure how to rectify it.
while (secondOddNum - firstOddNum > 2)
{
if (firstOddNum % 2 > 0) //positive numbers
{
firstOddNum += 2;
sumOdd += pow(firstOddNum,2);
cout << firstOddNum << endl;
} else // even numbers
{
firstOddNum += 1;
sumOdd += pow(firstOddNum,2);
cout << firstOddNum << endl;
}
Thanks
I think your logic is overcomplicating the problem a little bit. Did you mean to do something like this?
void OutputOdds(int min, int max)
{
for(int i = min; i <= max; i++)
{
if(i % 2 == 1 || i % 2 == -1)
cout << i << " ";
}
}
Tests:
OutputOdds(-25, 6);
cout << endl << endl;
OutputOdds(1, 3);
cout << endl << endl;
OutputOdds(2, 4);
prints
-25 -23 -21 -19 -17 -15 -13 -11 -9 -7 -5 -3 -1 1 3 5
1 3
3
You can try something like this:
void printOddsBetween(int min, int max) {
int t = min + (min % 2 == 0);
while (t <= max) {
cout << t << endl;
t += 2;
}
}
It starts at the closest odd value to min. Then just prints every odd value up to max.
int min = 1;
int max = 11;
int counter = 0;
for (int i = min; i <= max; i++) {
if (i % 2 != 0) {
System.out.println(i);
counter += 1;
}
}
System.out.println("counter" + counter);
int xx[] = new int[counter];
int ii = 0;
for (int i = min; i <= max; i++) {
if (i % 2 != 0) {
xx[ii] = i;
ii += 1;
}
}
int firstNum{}, secondNum{};
cout << "Enter two numbers, the first smaller than the second."
<< endl;
cout << "Enter first integer: \t";
cin >> firstNum;
cout << endl;
while (firstNum < secondNum);
{
cout << "Enter second integer: \t";
cin >> secondNum;
cout << endl;
cout << "\nOdd numbers from " << firstNum << " to " << secondNum << " are \n";
for (int i = firstNum; i <= secondNum; i++)
{
if (i % 2 != 0)
{
cout << i << " ";
}
}
}
Prints: 2 & 19 ARE MY USER INPUTS
Enter two numbers, the first smaller than the second.
Enter first integer: 2
Enter second integer: 19
Odd numbers from 2 to 19 are
3 5 7 9 11 13 15 17 19
im programming a little scrabble game, here are the code which i prefer to simulate the "playfield", but i got some issue
#include "Scrabble.h"
#include <iostream>
#include <cstdlib>
#include <stdexcept>
using namespace std;
Scrabble::Scrabble() {
Character *pointer;
pointer = NULL;
reihe = 15;
spalte = 15;
for (int i = 0; i < reihe; i++) {
playground.push_back(vector <Character>());
for (int j = 0; j < spalte; j++) {
playground[i].push_back('a');
}
}
}
void Scrabble::print() {
cout << " ";
for (int i = 0; i < column; i++) {
cout << i << " ";
}
cout << endl;
for (int r = 0; r < row; r++) {
cout << r << " ";
for (int s = 0; s < cloumn; s++) {
cout << playground[r][s] << " ";
}
cout << endl;
}
}`
the output looks a little strange
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
1 a
a
some advice how i get it looks normal like:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 a
1 a
2 a
3 a
4 a
5 a
6 a
7 a
8 a
9 a
10 a
11 a
12 a
13 a
14 a
any advice will be helpful, thx
Your code snippet doesn't compile (e.g. variable cloumn), so I suppose this is not exactly the code that you are testing.
One problem you'll face, is to ensure the with of a field. For this you have to include <iomanip>:
void Scrabble::print() {
cout<<" ";
for (int i = 0; i < column; i++) {
cout << setw(2)<<i << " ";
}
cout << endl;
for (int r = 0; r < row; r++) {
cout << setw(2)<< r << " ";
for (int s = 0; s < column; s++) {
cout << setw(2)<< playground[r][s] << " ";
}
cout << endl;
}
}
Here an online version (compiled without class, for demo purpose, as I don't know the definition of Scrabble