Вычтите каждый элемент массива и найдите самый большой среди них - PullRequest
0 голосов
/ 29 декабря 2018

Моя проблема в том, что у меня есть массив с днями рождения, и мне нужно найти наибольшую разницу в возрасте среди каждого дня рождения.

Я думал о том, чтобы каждый год вычитать, сохранять различия в массиве и находить наибольшую разницу во временном массиве.

#include <iostream>

using namespace std;

int main()
{
    int t[5] = {1999,2001,1996,1998,1999};
    int temp[10] = {0};
    for (int i=0; i<5;i++)
    {
       for (int j=i+1; j<5; j++)
       {
         if(t[i] > t[j])
         {
            temp[i] = t[i] - t[j];
         }
          else  if (t[i] < t[j])
         {
            temp[i] = t[j] - t[i];
         }
         else 
         {
            temp[i] = 0;
         }
       }
     }

    for (int i=0; i<10;i++)
    cout << temp[i] <<" ";

    return 0;
}

Когда я пытаюсь это сделать, я не получаюпри любой разнице в возрасте программа работает только для первого элемента.

У меня возникают трудности с этой частью, мне удается найти самый большой элемент, когда у меня есть правильные значения во временном массиве.

1 Ответ

0 голосов
/ 29 декабря 2018

Вы сохраняете вычисленную разницу в местоположении i этого temp массива.Значение i обновляется только после завершения внутреннего цикла j.Это приводит к перезаписи значений.Попробуйте что-то вроде:

 int k = 0;
 for (int i=0; i<5;i++)
 {
      for (int j=i+1; j<5; j++)
      {
           if(t[i] > t[j])
           {
               temp[k] = t[i] - t[j];
           }
           else  if (t[i] < t[j])
           {
               temp[k] = t[j] - t[i];
           }
           else 
           {
               temp[k] = 0;
           }
           k++;
       }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...