#c
#c
Вопрос:
#include <iostream>
using namespace std;
int main()
{
int a[] = {2,3};
int b[] = {2,1};
int c[2];
int n = sizeof(a)/sizeof(a[0]);
int m = sizeof(b)/sizeof(b[0]);
int i,j;
int sum,prd;
for(i=0;i<n;i ){
for(j=m-1;j>=0; j--){
sum = a[i] b[j];
prd = a[i]*b[j];
cout<<sum << " -- "<<prd<<"n";
if(sum > prd){
c[i] = sum;
break;
}else{
c[i] = prd;
}
}
}
cout<<c[0]*c[1];
}
Здесь я пытаюсь получить максимальное произведение, например
, если a [0] b [1] является максимальным из a[0] * b[1], поэтому я хочу сохранить сумму
, если a [1] b [0] является максимальным из a[0] * b[1] итак, я хочу сохранить продукт
затем я пытаюсь сохранить его в массив c
Комментарии:
1. Почему бы просто не
std::sort
использовать два массива? Тогда это всего лишь несколько тестов, чтобы увидеть, что такое максимальное произведение и сумма.2. не могли бы вы предоставить мне код, пожалуйста
3. не могли бы вы предоставить мне код, пожалуйста — Нет, здесь это так не работает. SO не является сервисом для написания кода. Во-вторых, забудьте на мгновение о кодировании — если бы массивы были отсортированы, разве это не упростило бы тесты? Либо максимальными будут последние два элемента, первые два элемента (если разрешены отрицательные значения), либо некоторая комбинация первого и последнего элементов.
4. Ваше объяснение мне не очень понятно. Может быть, это помогло бы, если бы вы сказали, что не так с вашим кодом? Кажется, это что-то близкое к тому, что вы описываете.
5. @PaulMcKenzie Группа может быть не английской, но, очевидно, если она есть, опубликуйте ее здесь.
Ответ №1:
Вот что вы хотите: сначала вы должны знать комбинации. Для массивов a и b с 2 вспомогательными данными можно сравнить с 4 разными способами. итак, наш массив c [] должен иметь размер 4.
Следуйте приведенному ниже коду:
#include <iostream>
using namespace std;
int main()
{
int a[2] = { 2,3 };
int b[2] = { 2,1 };
int c[4];
int n = sizeof(a) / sizeof(a[0]);
int m = sizeof(b) / sizeof(b[0]);
int i, j;
int sum, prd;
int loopCounter = 0; //for count n'th loop to store in c
for (i = 0; i < n; i) { //this loop for a's combinations
for (j = 0; j < m; j) { // this loop for b'c combinations
sum = a[i] b[j];
prd = a[i] * b[j];
cout << sum << " -- " << prd << "n";
if (sum > prd) {
c[loopCounter] = sum; //I deleted break; which causes ends of loop
}
else {
c[loopCounter] = prd;
}
loopCounter; // counter plus 1, for next loop
}
}
for (int d = 0; d < sizeof(c) / sizeof(c[0]); d) { //scanning all C datas
std::cout << d 1 << ". Stored Data: " << c[d] << std::endl; //showing all
}
}
Вывод:
4 -- 4 //a[0] b[0]'s Sum vs Multiple
3 -- 2 //a[0] b[1]'s Sum vs Multiple
5 -- 6 //a[1] b[0]'s Sum vs Multiple
4 -- 3 //a[1] b[1]'s Sum vs Multiple
1. Stored Data: 4
2. Stored Data: 3
3. Stored Data: 6
4. Stored Data: 4