У нас был проект, который попросил нас написать программу, которая позволяет пользователю вводить ряд чисел «читать числа в массив для дальнейшей обработки, пользовательские сигналы, которые они завершают, вводя отрицательное число (отрицательное значение не используется в вычислениях), после того, как все числа были прочитаны, выполните следующие действия: суммируйте введенные #, подсчитайте введенные #, найдите min/max #, вычислите среднее значение, затем выведите их на экран . таким образом, рабочая версия этого, что я сделал как выглядит такC++ Array копирование/смена
/* Reads data into array.
paramater a = the array to fill
paramater a_capacity = maximum size
paramater a_size = filled with size of a after reading input. */
void read_data(double a[], int a_capacity, int& a_size)
{
a_size = 0;
bool computation = true;
while (computation)
{
double x;
cin >> x;
if (x < 0)
computation = false;
else if (a_size == a_capacity)
{
cout << "Extra data ignored\n";
computation = false;
}
else
{
a[a_size] = x;
a_size++;
}
}
}
/* computes the maximum value in array
paramater a = the array
Paramater a_size = the number of values in a */
double largest_value(const double a[], int a_size)
{
if(a_size < 0)
return 0;
double maximum = a[0];
for(int i = 1; i < a_size; i++)
if (a[i] > maximum)
maximum = a[i];
return maximum;
}
/* computes the minimum value in array */
double smallest_value(const double a[], int a_size)
{
if(a_size < 0)
return 0;
double minimum = a[0];
for(int i = 1; i < a_size; i++)
if (a[i] < minimum)
minimum = a[i];
return minimum;
}
//computes the sum of the numbers entered
double sum_value(const double a [], int a_size)
{
if (a_size < 0)
return 0;
double sum = 0;
for(int i = 0; i < a_size; i++)
sum = sum + a[i];
return sum;
}
//keeps running count of numbers entered
double count_value(const double a[], int a_size)
{
if (a_size < 0)
return 0;
int count = 0;
for(int i = 1; i <= a_size; i++)
count = i;
return count;
}
int _tmain(int argc, _TCHAR* argv[])
{
const int INPUT_CAPACITY = 100;
double user_input[INPUT_CAPACITY];
int input_size = 0;
double average = 0;
cout << "Enter numbers. Input negative to quit.:\n";
read_data(user_input, INPUT_CAPACITY, input_size);
double max_output = largest_value(user_input, input_size);
cout << "The maximum value entered was " << max_output << "\n";
double min_output = smallest_value(user_input, input_size);
cout << "The lowest value entered was " << min_output << "\n";
double sum_output = sum_value(user_input, input_size);
cout << "The sum of the value's entered is " << sum_output << "\n";
double count_output = count_value(user_input, input_size);
cout << "You entered " << count_output << " numbers." << "\n";
cout << "The average of your numbers is " << sum_output/count_output << "\n";
string str;
getline(cin,str);
getline(cin,str);
return 0;
}
Все прошло нормально, проблема, которую я имею теперь часть 2. Где мы хотим «скопировать массив в другой и сдвинуть массив на N элементов ". Я не уверен, с чего начать на любом из них. Я посмотрел вверх несколько ресурсов на копирование массива, но я не был уверен, как реализовать их в текущем коде, который я закончил, особенно когда речь заходит о переносе. Если у кого-то есть мысли, идеи или ресурсы, которые могут помочь мне на правильном пути, мы будем очень благодарны. Я должен также указать, что я новичок (и это класс новичков), поэтому это задание может быть не «оптимальным», как это может быть сделано, а вместо этого включает в себя то, что мы узнали, если это имеет смысл.
C++ есть [хороший набор algorightms] (http://en.cppreference.com/w/cpp/algorithm/rotate_copy), что вы можете использовать, например, ['std :: rotate_copy'] (http://en.cppreference.com/w/cpp/algorithm/rotate_copy), который, кажется, делает то, что вы хотите. –