Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
dimkachel
6 / 1 / 1
Регистрация: 18.11.2009
Сообщений: 172
#1

Одномерный массив В из номеров положительных элементов массива А - C++

19.06.2012, 20:59. Просмотров 559. Ответов 12
Метки нет (Все метки)

Помогите сформировать одномерный массив В из номеров положительных элементов массива А.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 20:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерный массив В из номеров положительных элементов массива А (C++):

Дан одномерный массив состоящий из N целочисленных элементов. Вычислить сумму положительных элементов массива кратных 3 - C++
если не сложно помогите 1)дана функция y=0.5+sin(5x), причем х изменяется от 0 до 2pi с шагом x=pi/6!(программа не выводит результата...

Ввести одномерный массив А, вывести его. Вычислить среднее геометрическое положительных элементов массива - C++
Ввести одномерный массив A , вывести его. Вычислить SRG-среднее геометрическое положительных элементов массива. Преобразовать элементы...

Сформировать одномерный массив Х из положительных элементов матрицы А, найти минимальный элемент массива Х и его номер - C++
Доброго всем времени суток) никак не могу создать массив из матрицы( кто поумнее меня , помогите плиз) Вот задание: ...

Составить одномерный массив из номеров строк двумерного массива - C++
Помогите написать программу! Дан двухмерный целочисленный массив А(M,N). Составить одномерный массив В из номеров строк этого...

Составить одномерный массив номеров строк двумерного массива - C++
Дан двухмерный целочисленный массив А(N,M). Составить одномерный массив В номеров строк этого массива

Вычисление суммы и определение номеров положительных элементов массива - C++
Задан массив целых чисел из 10 элементов.Программа вычисляет сумму положит. элементов И выводит номера положит. элементов....

12
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 21:09 #2
C++
1
2
3
4
5
6
for (int i = 0; i < n; i++)
           if ( a[i] > 0) 
            {
              b[k] = i;  
              k++;
             }
как то так =)
0
dimkachel
6 / 1 / 1
Регистрация: 18.11.2009
Сообщений: 172
19.06.2012, 21:27  [ТС] #3
bLesk, можно ли подробнее.
А то сделал как то но не работает:
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
#include "stdafx.h"
#include <conio.h>
#include <math.h>
#include <stdlib.h>  //указатели
#include <iostream>
using namespace std;
 
void _tmain()       
{
int arr[1000],n,b[1000],k;
    setlocale(LC_ALL,"Russian");
    cout<<"\nВведите разрядность массива А: \n";
    cin >> n;
    for (int i = 0; i < n; i++) //цикл
        {
        arr[i] = rand()%100;       //i-тому элементы присваивается число от 0 до 99
        cout << arr[i] <<" "; 
        }
    for (int i = 0; i < n; i++)
           if ( arr[i] > 0) 
            {
              b[k] = i;  
              cout <<"Массив В: "<<b[k] <<" ";
              k++;            
             }
    _getch();
}
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 22:10 #4
C++
1
k=0
когда инициализируете k, хорошо бы ему присвоить значение 0, тогда массив b будет с нуля отсчитываться, а не откуда попало. И да, не забывайте что у массива нумерация идет с 0, поэтому чтобы не запутаться, в массив b можно не i класть, а i+1, так понятней будет. (например число с номером в массиве 5, фактически будет под номером 4 ведь нумерается не с 1 а с 0)

Добавлено через 8 минут
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
#include<iostream>
#include<cstdlib>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int *A, *B, size, pos=0; 
    cout<<"Введите размер массива А : "<<endl;
    cin>>size;
    A = new int[size];
    B = new int[size];
    cout<<"Заполните массив : "<<endl;
    for (int i = 0; i < size; i++)
        cin>>A[i];
    for (int i = 0; i < size; i++)
        if (A[i] > 0)
            {
                B[pos]=i+1;
                pos++;
            }
    for (int i = 0; i < pos; i++)
        cout<<" "<<B[i];
    cout<<endl;
    system("pause");
}
Добавлено через 43 секунды
ах да, ещё delete [] A и delete[] B нужно )
0
dimkachel
6 / 1 / 1
Регистрация: 18.11.2009
Сообщений: 172
19.06.2012, 22:18  [ТС] #5
bLesk, Спасибо конечно, но я хотел с массивом из случайных чисел, и желательно что бы попадались в нем не положительные числа.
Пример с назначенным пользователем массивом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <conio.h>
#include <math.h>
#include <stdlib.h>  
#include <iostream>
using namespace std;
 
void _tmain()       
{
    int a[5],i;
    setlocale(LC_ALL,"Russian");
    cout<<"\nВведите массив из 5 элементов:\n";
    for(i=0;i<5;i++)
        cin>>a[i];
    cout<<"Массив В : ";
    for (int i = 0; i < 5; i++)
           if ( a[i] > 0) 
               cout<< i <<" ";
    _getch();
}
С массивом из случайных чисел (но почему то без не положительных чисел):
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
#include "stdafx.h"
#include <conio.h>
#include <math.h>
#include <stdlib.h>  //указатели
#include <iostream>
using namespace std;
 
void _tmain()       
{
int arr[100],n,p;
    setlocale(LC_ALL,"Russian");
    cout<<"\nВведите разрядность массива А: \n";
    cin >> n;
    cout <<"Массив A: ";
    
    for (int i = 0; i < n; i++) //цикл
        {
        arr[i] = rand()%100;       //i-тому элементы присваивается число от 0 до 99
        cout << arr[i] <<" ";
        }
    cout <<"Массив В: ";
    for (int i = 0; i < n; i++)
    {
            if ( arr[i] > 0)
                p=i+1;
            cout << p<<" ";
    }
    _getch();
}
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 22:21 #6
а откуда у вас появятся отрицательные числа? если вы их генерируете от 0 до 99
0
dimkachel
6 / 1 / 1
Регистрация: 18.11.2009
Сообщений: 172
19.06.2012, 22:25  [ТС] #7
bLesk, я только учусь, вот и спрашиваю.
а как тогда его заполнить не только положительными?
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 22:28 #8
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
#include<iostream>
#include<cstdlib>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int *A, *B, size, pos=0; 
    cout<<"Введите размер массива А : "<<endl;
    cin>>size;
    A = new int[size];
    B = new int[size];
    for (int i = 0; i < size; i++)
        A[i]=rand()%10 - 5;
    cout<<"Массив А : "<<endl;
    for (int i = 0; i < size; i++)
        cout<<" "<<A[i];
    for (int i = 0; i < size; i++)
        if (A[i] > 0)
            {
                B[pos]=i+1;
                pos++;
            }
    cout<<endl<<"Массив В : "<<endl;
    for (int i = 0; i < pos; i++)
        cout<<" "<<B[i];
    cout<<endl;
        delete []A;
        delete []B;
    system("pause");
}
Добавлено через 2 минуты
блин опять забыл про delete..
1
dimkachel
6 / 1 / 1
Регистрация: 18.11.2009
Сообщений: 172
19.06.2012, 22:29  [ТС] #9
Вот спасибо!
вот что получилось:
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
#include "stdafx.h"
#include <conio.h>
#include <math.h>
#include <stdlib.h>  //указатели
#include <iostream>
using namespace std;
 
void _tmain()       
{
int arr[100],n,p;
    setlocale(LC_ALL,"Russian");
    cout<<"\nВведите разрядность массива А: \n";
    cin >> n;
    cout <<"Массив A: ";
    
    for (int i = 0; i < n; i++) //цикл
        {
        arr[i] = rand()%100 -50;       //i-тому элементы присваивается число от 0 до 99
        cout << arr[i] <<" ";
        }
    cout <<"Массив В: ";
    for (int i = 0; i < n; i++)
    {
            if ( arr[i] > 0)
            {
                p=i+1;
                cout << p<<" ";
            }
    }
    _getch();
}
У меня , как добавил delete []arr; поперли ошибки ((
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 22:33 #10
вы выводите просто номера положительных элементов в массиве А. а по условию вам нужно их выводить из другого массива В, мне конечно без разницы, если это не суть.
но всё таки по чесноку было бы не
C++
1
p=i+1
а
C++
1
2
b[k]=i+1
k++
и потом через цикл for выводить массив b[k]
0
MrGluck
Модератор
Эксперт CЭксперт С++
7490 / 4605 / 691
Регистрация: 29.11.2010
Сообщений: 12,589
19.06.2012, 22:33 #11
C++
1
2
3
4
5
void _tmain()  
int arr[100]
cin >> n;
for (int i = 0; i < n; i++)
arr[i]
Хреново получилось как-то. А если я введу 101? Используйте динамический массив.

И пишите int main()
0
bLesk
41 / 41 / 1
Регистрация: 24.11.2009
Сообщений: 165
19.06.2012, 22:36 #12
ну в своем примере я как раз и сделал динамический, и main тоже int, но по всей видимости автор ещё не добрался до динамических массивов)

Добавлено через 1 минуту
Цитата Сообщение от dimkachel Посмотреть сообщение
У меня , как добавил delete []arr; поперли ошибки ((
ну так у вас нет динамического массива, он у вас статический. а в моем примере динамический
у вас
C++
1
int arr[100]
а у меня
C++
1
2
int *A;
A=new int[n]
поэтому мне нужно ещё очищать выделенную память командой delete(а в случае со статическим массивом этого делать не нужно)
0
dimkachel
6 / 1 / 1
Регистрация: 18.11.2009
Сообщений: 172
19.06.2012, 22:42  [ТС] #13
MrGluck, при nt main() почему то не работает ничего, я только начинаю, может чего нить не знаю.

Добавлено через 4 минуты
Цитата Сообщение от bLesk Посмотреть сообщение
вы выводите просто номера положительных элементов в массиве А. а по условию вам нужно их выводить из другого массива В, мне конечно без разницы, если это не суть.
Я думаю в данном случае главное результат. Ну а по чесноку, то да, надо загонять в массив.
0
19.06.2012, 22:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2012, 22:42
Привет! Вот еще темы с ответами:

Сформировать одномерный массив из номеров первых отрицательных элементов каждой строки матрицы - C++
Дана матрица А размерностью n*m. Сформировать одномерный массив В, элементами которого являются номера первых отрицательных элементов...

Составить одномерный массив B из номеров строк двумерного массива, в которых есть хотя бы одно нечетное число - C++
Здравствуйте, помогите написать программу, условие задачи: Дан двумерный целочисленный массив A(M,N). Составить одномерный массив B...

Одномерный массив. Создать массив Х суммы среднеарифметического элементов массива А с каждым элементом массива А - C++
Дан массив А.Создать массив Х суммы среднеарифметического элементов массива А с каждым элементом массива А.

Создать массив из номеров нулевых элементов исходного массива - C++
В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов. Плиз помогите решить , завтра сдавать...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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