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

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

Войти
Регистрация
Восстановить пароль
 
Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
#1

Нули в конце массива - C++

11.11.2010, 09:59. Просмотров 710. Ответов 4
Метки нет (Все метки)

Задание было заполнить массив случайными числами от -5 до 5.
А также вычислить максимальный елемент массива.
И сумму элементов , расположенных до последнего положительного элемента

(Еще сжать массив, удалив из него все элементы модуль которых находится в интервале от 2 до 5) - Сделано

А освободившееся в конце массива заполнить нулями - вот с этим проблема. Надеюсь что-нибудь подскажете.



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
44
45
46
47
48
49
50
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <math.h>
#define N 10
void main()
{
double A[N],max,b,p,z,n;
int j,i,S=0,Sn;
clrscr();
cout<<"Variant 5"<<endl;
cout<<endl;
cout<<"diapazon 2<x<5"<<endl;
cout<<endl;
randomize();
 for(i=0;i<N;i++)
  {
A[i]=random(10)-5;
 if(A[i]>max)
max=A[i];
cout<<A[i]i<<" ";
}
for (i=0;i<N;i++)
 {
if (A[i]>0)
z=i;
}
for(i=0;i<z;i++)
S+=A[i];
cout<<endl;
cout<<endl<<"index poslednego pologitel'nogo elementa -> "<<z<<endl;
cout<<endl;
cout<<"Maximal'noe chislo v massive -> "<<max<<endl;
cout<<endl;
cout<<"Summa elementov do poslednego pologitel'nogo="<<S;
cout<<endl;
cout<<endl;
cout<<endl;
 
for(i=0;i<N;i++)
{
if (( (fabs(A[i])) < 5) & ((fabs (A[i])>2)))
{
 
cout<<A[i]<<" ";
}}
 
getch();
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2010, 09:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нули в конце массива (C++):

Расположить элементы массива так, чтобы нули было в начале, а единицы в конце - C++
Дан массив, состоящий из нулей и единиц, нужно расположить элементы массива так, чтобы нули было в начале, а единицы в конце.

Отсортировать массив таким образом, чтобы все нули находились в начале, а единицы — в конце массива - C++
Здравствуйте, дано такое задание Элементами массива IM(N) являются числа 0 и 1. Отсортировать этот массив таким образом, чтобы все нули...

Отсортировать массив из 0 и 1 так, чтобы все нули находились в начале, а все единицы - в конце массива - C++
Тема: Функции 1. Дано одномерный массив, заполненный 0 и 1 в произвольном порядке. Отсортировать данный массив таким образом, чтобы все...

Нули в конце записи n! - C++
Эта программа вычисляет нули в конце записи факториала числа: #include &lt;stdio.h&gt; #include &lt;math.h&gt; long recourse(long n) //n -...

Отсортировать заданную последовательность так, чтобы все нули оказались в конце - C++
Задача: Дана последовательность чисел, отсортировать эту последовательность так, чтобы все нули оказались в конце, а все остальные числа...

Разместить в массиве все положительные элементы в начале, отрицательные - в конце, посередине - нули - C++
Всем доброго времени суток! Большая просьба помочь написать программу. Нужно сформировать 2 одинаковых динамических одномерных массива, где...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
11.11.2010, 10:32 #2
Я б как-нибудь так сделал:
C++
1
2
3
4
5
6
7
8
9
10
for(i=0; i<N; ++i)
{
    if (fabs(A[i]) < 5 && fabs (A[i])>2)
    {
        for(j = i+1; j < N; ++j)
            A[j-1] = A[j];
        A[N-1] = 0;
        i--;
    }
}
Сразу и сдвиг и обнуление.
1
Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
11.11.2010, 13:25  [ТС] #3
Не работает(

а тут просто из 10 чисел выбираются подходящие и пишутся в новый массив.

допустим подошло 3 числа - 7 мест остались пустыми - надо на эти места поставить нули

Добавлено через 8 минут
Препод сказал нужно посчитать сколько элементов неподходящих было удалено из первого массива и эту цифру использовать во 2м массиве. (сколько удалено символо - столько нулей в конце добавлено)

Добавлено через 15 минут
что только не выводится с твоим циклом)

Добавлено через 10 минут
up/////////
0
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
11.11.2010, 13:46 #4
Musik, а что, препод такой принципиальный? Второй массив ему подавай) По-моему проще тогда уж кол-во подходящих посчитать, а остальные заменить нулём.
Вот что получилось, сразу говорю - изврат:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
j=0;
    for(i=0; i<N; ++i)
    {
         if (fabs(A[i]) >= 5 || fabs (A[i])<=2)
          {
            B[j]=A[i];
            ++j;
         }
    }
 
    for(i=j; i<N; ++i)
    {
        B[i]=0;
    }
Добавлено через 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
#include <iostream>
#include <math.h>
using namespace std;
 
 
int main()
{
    const int N = 10;
    int i,j;
    int A[N]={1,2,3,3,3,4,4,8,9,10},B[N];
 
    for(i=0; i<N; ++i)
    {
       if (fabs(A[i]) < 5 && fabs (A[i])>2)
           {
        for(j = i+1; j < N; ++j)
            A[j-1] = A[j];
                A[N-1] = 0;
        i--;
       }
    }
 
    for(i=0; i<N; ++i)
    {
        cout<<A[i]<<" ";
    }
 
    cout<<endl;
    system("pause");
    return 0;
}
1
Напильнег
480 / 120 / 10
Регистрация: 30.09.2010
Сообщений: 473
11.11.2010, 16:17 #5
Цитата Сообщение от Musik Посмотреть сообщение
Препод сказал нужно посчитать сколько элементов неподходящих было удалено из первого массива и эту цифру использовать во 2м массиве.
Веселый у вас препод: то, что в одной программе используются средства вывода C и C++ он за быдлокодинг не считает, то, что random неправильно используется, что вообще уже ошибка - тоже. То, что при определении максимума max не инициализируется, а сумма элементов массива типа double считается в переменной типа int, не видит, а вот второй массив зачем-то требует, хотя в задани написано сжать исходный.

Ладно, вот тебе образец для подражания, сравнивай со своим и исправляй:
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
44
45
46
47
48
49
50
51
...
#include <iomanip.h>
...
 
...
 
  double A[N], max, S, S2;
  int i, j, z;
 
  ...
 
  randomize(); for (i=0; i<N; i++) A[i]=random(11)-5;
 
  cout << "A before:";
  for (i=0; i<N; i++) cout << " " << setw(2) << A[i];
  cout << endl;
  cout << endl;
 
  for (max=A[0], i=1; i<N; i++)
    if (A[i]>max) max=A[i];
 
  cout << "Maximal'noe chislo v massive: " << max << endl;
  cout << endl;
 
  for (S=0, S2=0, z=-1, i=0; i<N; i++)
    if (A[i]>0) {
      z=i; S+=S2; S2=A[i];
    }
    else {
      S2+=A[i];
    }
 
  cout << "Index poslednego pologitel'nogo elementa v A: ";
    (z>=0)?(cout << z):(cout << "net"); cout << endl;
  cout << endl;
  cout << "Summa elementov do poslednego pologitel'nogo: "
    << S << endl;
  cout << endl;
 
  for (j=0, i=0; i<N; i++)
    if (!((2<fabs(A[i])) && (fabs(A[i])<5)))
      A[j++]=A[i];
  for (i=j; i<N; i++)
    A[i]=0;
 
  cout << "A after: ";
  for (i=0; i<N; i++) cout << " " << setw(2) << A[i];
  cout << endl;
  cout << endl;
 
  ...
Можно было бы конечно и в один цикл почти все зафигачить, но боюсь твой препод не поймет...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2010, 16:17
Привет! Вот еще темы с ответами:

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

Добавить в конец массива элементы, расположенные между min и max элементами исходного массива, исключая нули - C++
добавить в конец массива элементы, расположенные между минимальными и максимальными элементами исходного массива, исключая нулевые

Переставить значение элементов заданного одномерного массива, так чтобы все нулевые оказались в конце массива - C++
А не нулевые в начале, не нарушая порядок, в котором они были

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


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

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

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