Выведите общее число и индексы элементов, которые больше числа - PullRequest
0 голосов
/ 17 ноября 2018

Я хочу найти общее число и индексы элементов массива, которые больше 100.

Например: первый ряд - это количество домов .Первый столбец - это квадрат домов , а второй столбец - их цена .Я хочу распечатать дома, цена которых превышает 100.

6

42 15 

110 20

125 160 

166 180

42 10

110 39  

Результат должен выглядеть следующим образом:

2 (total number of the houses)  3 (index of the first house) 4 (index of the second house) 

Мой код:

#include <iostream>
using namespace std;

int main()
{
   int house, square[100], price[100], counter=0;
   cin >> house;

   if ( price[i] > 100)
    counter++;
 }
    cout << counter << endl;
    return 0;
}

Я не знаю, как получить индексы , кто-нибудь может помочь?

Ответы [ 4 ]

0 голосов
/ 17 ноября 2018

Насколько я понимаю, вы задаетесь вопросом о том, каким должен быть ваш вывод, а каким кодом вы выделяете много ненужной памяти для ваших массивов.
6 (количество домов для сравнения)? дома 1 (42 15) вместо массива из 100 элементов вам нужно только 2, потому что каждый является целым числом, а не ценой квадрат [2], который в память будет адресован как дом [0] и дом [1] Дом [0] будет иметь значение 42, а дом [1] будет иметь значение 15.

Также он выглядит как двумерный массив, поэтому вы можете использовать houseprice [6] [2]. Это даст вам 2-мерный массив, выглядящий так:

[0] [0] [1]

[1] [0] [1]

[2] [0] [1]

[3] [0] [1]

[4] [0] [1]

[5] [0] [1]

Это делает первый столбец индексом, а 2-й и 3-й столбцы домами для сравнения Надеюсь, что это поможет вам понять массивы и как делать то, что вы хотите.

idzireit

0 голосов
/ 17 ноября 2018

сначала возникает ошибка компиляции с вашим кодом, дополнительно }

Во-вторых, чтобы получить индекс, просто возьмите одну переменную i и увеличивайте ее после каждого цикла.

#include <iostream>
using namespace std;

int main()
{
   int house, greter_prices[100], counter=0;
   cin >> house;

   int i = 0;
   int price_index=0;
   while(i< house){
    int size;
    cin >> size;
    int price;
    cin >> price;
    if ( price > 100){
      counter++;
      greter_prices[price_index++]=i;
    }
    i++;
   }

   cout << counter<<" ";
   i=0;
   while(i<price_index){
    cout << greter_prices[i]<<" ";  
    i++;
   }
    return 0;
}
0 голосов
/ 17 ноября 2018

При вводе house и price вы можете сохранить indexes в массиве vector, если price больше 100.

живое демо

#include <iostream>
#include <vector>

int main()
{
    std::size_t size; std::cin >> size;
    std::vector<std::size_t> indexVec;  // vector array to store the indexes
    std::size_t no_houses = 0;          // to count while inputing
    for (std::size_t index = 0; index < size; ++index)
    {
        int house, price;
        std::cin >> house >> price; // user input
        if (price > 100) 
        {
            ++no_houses;  
            indexVec.emplace_back(index + 1);  // store the indexes
        }
    }
    std::cout << no_houses << " "; // just print
    for (const int index: indexVec)     std::cout << index << " ";
}
0 голосов
/ 17 ноября 2018

Вы даже скомпилировали код? Есть ошибка - что такое i?

Вам нужно прочитать, чтобы прочитать строку (два числа), а затем проверить, является ли первое число больше 100. Если это так, выведите его индекс, т.е. i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...