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

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

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

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

11.11.2010, 09:59. Просмотров 704. Ответов 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2010, 09:59     Нули в конце массива
Посмотрите здесь:

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

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

Выводит ноль в конце массива - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { int j = 0; char FIO = { 0...

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

Переставить нули и двойки в начало массива - C++
Собственно решение у меня есть, но я не понимаю этого кода, можете пожалуйста объяснить, что делает каждая строчка или команда. ...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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--;
    }
}
Сразу и сдвиг и обнуление.
Musik
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 23
11.11.2010, 13:25  [ТС]     Нули в конце массива #3
Не работает(

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

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

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

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

Добавлено через 10 минут
up/////////
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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2010, 16:17     Нули в конце массива
Еще ссылки по теме:

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

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

Появляющиеся нули при переводе из массива char в double - C++
Здравствуйте! Пишу калькулятор и описываю кнопку &quot;+/-&quot;. a=atof(nBuf); a=a*(-1); sprintf (nBuf, &quot;%f&quot;, a); nBuf - массив char, в...

Заменить отрицательные элементы одномерного массива целых чисел на нули - C++
Заменить отрицательные элементы одномерного массива целых чисел на нули, а затем подсчитать количество нулевых элементов. ...


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

Или воспользуйтесь поиском по форуму:
Напильнег
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;
 
  ...
Можно было бы конечно и в один цикл почти все зафигачить, но боюсь твой препод не поймет...
Yandex
Объявления
11.11.2010, 16:17     Нули в конце массива
Ответ Создать тему
Опции темы

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