Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
swizz
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 13
#1

Образование массива. - C++

04.10.2009, 14:39. Просмотров 1176. Ответов 11

Всем привет, помогите пожалуйста решить следущую задачку

"Дан массив, состоящий из n натуральных чисел. Образуйте новый массив, элементами которого будут элементы исходного, начинающиеся на цифру k."

К сожалению я еще не освоил массивы, поэтому очень надеюсь на вашу помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2009, 14:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Образование массива. (C++):

Образование области - C++
Всем доброго дня! Такая проблема, есть две параболы и прямая нужно задать условие, что они образуют область (на рисунке показано...

Рекуррентное образование матрицы - C++
По двум заданным матрицам X и Y размерности n  m вычислить матрицу X5 согласно следующему рекуррентному соотношению: где x0 =...

Обучение. Книги. Образование. Наверстать упущенное - C++
Доброго времени суток уважаемые программисты и сисадмины! Учусь на 1-ом курсе, есть такой предмет, как программирование, во втором...

Напечатать список сотрудников, имеющих высшее образование. - C++
В файл записать информацию о сотрудниках некоторого предприятия: фамилия, домашний адрес, телефон, образование, оклад. Напечатать список...

Создать два массива. Вычислить количество тех элементов каждого массива, для которых выполняется неравенство: 2<элемент массива<10 - C++
помогите,пожалуйста! есть вот такие задания...ОЧЕНЬ надо на завтра... Задача 4. Определить два одномерных массива А(19) и В(16);...

Функции обработки массива (определить произведение элементов массива, заменить модулем все элементы массива, уничтожить элемент с заданным значением) - C++
Вот задания,не могу сделать ни одного из них,буду благодарен за помощь. Написать функции для выполнения операций над одномерным...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
R0mm
Псевдо программист
192 / 113 / 15
Регистрация: 19.09.2009
Сообщений: 303
04.10.2009, 14:42 #2
просматриваешь в цикле элементы исходного массива.
если первая цифра числа к то добавляем этот элемент в новый массив.
swizz
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 13
05.10.2009, 12:33  [ТС] #3
Пожалуйста, кому не затруднительно, можете написать, как этот цикл будет выглядеть в с++?
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.10.2009, 12:55 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <string>
using namespace std;
 
#define SIZE 10
int main()
{   
    int arr[SIZE], k;
    int arrNew[SIZE];
 
    cout<<"array: ";
    for (int i=0;i<SIZE;i++) 
    { // заполняем массив, можешь вводить как угодно
      arr[i]=i;
      cout<<arr[i]<<" ";
    }
   
    cout<<"\ninput k:"; cin>>k;
    for (int i=0;i<SIZE;i++) 
    { // ищем 'к'
      if(arr[i]==k)
      {
        for (int j=0; j<SIZE;j++) 
        { // заполняем новый массив
         
          arrNew[j]=arr[i++];
          if(i>=SIZE) i-=SIZE;
        }
        break;
      }
    }
 
    cout<<"arrNew: ";
    for (int i=0;i<SIZE;i++) 
    { // выводим массив
      cout<<arrNew[i]<<" ";
    }
        
        cout<<"\n";
        system("pause");
return 0;
 
}
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
05.10.2009, 12:58 #5
C++
1
... if(arr[i]==k) ...
А теперь - правильный вариант (:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <algorithm>
#include <functional>
 
template <typename T>
struct match : public std::unary_function<T, bool>
{
    match(T x) : x_(x) {}
    bool operator()(T val) const
    {
        for ( ; val / 10; val /= 10 ) ;
        return val == x_;
    }
    const T x_;
};
 
int main()
{
    int arr[] = {1,2,3,11,22,33,111};
    const size_t N = sizeof(arr) / sizeof(arr[0]);
    int arr2[N] = {0};
 
    std::remove_copy_if(arr, arr+N, arr2, std::not1(match<int>(1)));
    // arr2 == {1, 11, 111, 0...};
    return 0;
}
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
05.10.2009, 13:13 #6
например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <vector>
...
bool isThe1stDigit (unsigned int value, unsigned int digit){
   ...
}
...
 
   unsigned int natural [10] = { 22, 235, 34, 57, 21, 977, 701, 345, 90, 156 };
   unsigned int digit = 2;
   std::vector<int> newArray (5);
   for (int i = 0; i < 10; i++){
      if (isThe1stDigit (*(natural+i), digit)){
         newArray.push_back (*(natural+i));
      }
   }
   // если нужен обязательно массив, можно аллокировать и переписать туда значения из вектора.
...
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
05.10.2009, 13:46 #7
Цитата Сообщение от Rififi Посмотреть сообщение
Код C++1 ... if(arr[i]==k) ...
эм, чего тут не так? как раз для человека не освоившего массивы.
swizz
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 13
06.10.2009, 18:02  [ТС] #8
большое спасибо!
swizz
0 / 0 / 0
Регистрация: 04.10.2009
Сообщений: 13
20.10.2009, 15:30  [ТС] #9
Цитата Сообщение от TanT Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <string>
using namespace std;
 
#define SIZE 10
int main()
{   
    int arr[SIZE], k;
    int arrNew[SIZE];
 
    cout<<"array: ";
    for (int i=0;i<SIZE;i++) 
    { // заполняем массив, можешь вводить как угодно
      arr[i]=i;
      cout<<arr[i]<<" ";
    }
   
    cout<<"\ninput k:"; cin>>k;
    for (int i=0;i<SIZE;i++) 
    { // ищем 'к'
      if(arr[i]==k)
      {
        for (int j=0; j<SIZE;j++) 
        { // заполняем новый массив
         
          arrNew[j]=arr[i++];
          if(i>=SIZE) i-=SIZE;
        }
        break;
      }
    }
 
    cout<<"arrNew: ";
    for (int i=0;i<SIZE;i++) 
    { // выводим массив
      cout<<arrNew[i]<<" ";
    }
        
        cout<<"\n";
        system("pause");
return 0;
 
}
При попытке запустить прогорамму, выдаються 3 ошибки с содержанием "error C2374: 'i' : redefinition; multiple initialization". Подскажите, пожалуйста, в чем причина и как её исправить.
#pragma
Временно недоступен
952 / 223 / 6
Регистрация: 12.04.2009
Сообщений: 921
20.10.2009, 22:15 #10
Rififi, хотел спросить насчёт этой строки
C++
1
const size_t N = sizeof(arr) / sizeof(arr[0]);
Что такое size_t? Его нужно использовать,когда заранее неизвестен размер,который будет храниться в переменной?Например, если я правильно понимаю,то уместным будет использование
C++
1
size_t find_dot = str.find('.');
так как find может вернуть std::npos,а на разных машинах это могут быть разные числа? Поправь,если ошибся.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
20.10.2009, 22:18 #11
swizz, у тебя среда или Borland или MS VS 6.0? Убери все int перед i во всех циклах на которые ругается компилятор
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
21.10.2009, 10:55 #12
#pragma,
Что такое size_t?
Насчёт функции memcpy()
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2009, 10:55
Привет! Вот еще темы с ответами:

Одномерные массивы A B образование нового массива C - Turbo Pascal
Даны два одномерных массива А(8 элементов) и В(5 элементов) сами числа вводим с клавиатуры. Образуйте новый массив из элементов массива...

Вывести слова, образование символами каждой из строк массива - Pascal ABC
Добрый вечер! Кто поможет с задачей-буду очень благодарен! Вывести слова, образование символами каждой из строк массива, в которой...

Определение в матрице максимальных элементов в каждой строке, образование массива из номеров столбцов каждого. В массиве каждый элемент удвоить - Turbo Pascal
Доброго времени суток! Столкнулся вот с такой вот задачей, не могу решить. Очень надеюсь на помощь знающих и опытных людей! Задача...

Объясните образование ссылок - PHP БД
Ребята, познаю РНР на досуге, так что какашками камнями больно уж не кидайтесь ;D Объясните, каким образом генерируются ссылки вида ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.10.2009, 10:55
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru