1 / 1 / 0
Регистрация: 20.10.2010
Сообщений: 147
1

Удалить из массива отрицательные элементы

01.11.2010, 20:06. Показов 1779. Ответов 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
#include "stdio.h"
void main ( )
{ 
 int x[100],i,k,j,n=0;
printf ("\n Vvedite kol-vo elementov\n");
scanf ("%d", &k);
for (i=0; i<k;i++)
{
 printf ("\n Vvedite elementi massiva\n");
scanf ("%d",& x[i]);
};
for (i=0; i<k;i++) 
if (x[i]<0)
 
{ 
 n++; for(j=i;j<k;j++)
x[j]=x[j+1]; k=k-1;
};
if (n==0) printf (" Otrizatelnix elementov net ");
else
if (n==k) printf ("Nylevoi massiv");
else
for (i=0; i<k;i++) 
printf( "%d ",x[i]);
}



функция "Отрицательных элементов нет" работает полностью;
функция "Нулевой массив" правильно работает, только если количество элементов - четное число.
Основную функцию не выполняет вовсе. не могу понять, где и в чем ошибка.
По алгоритму: при нажождении первого отрицательного элемента, я запоминаю его, и начиная с него сдвигаю массив вправо, при этом удаляя последний (отрицательный) элемент.

Помогите пожалуйста, буду очень благодарна.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2010, 20:06
Ответы с готовыми решениями:

если массив не является знакочередующимся,то удалить из массива все положительные числа,в противном случае-удалить отрицательные элементы.после удален
задан массив Х целых чисел. если массив не является знакочередующимся,то удалить из массива все...

Удалить отрицательные элементы массива
Дан одномерный массив, содержащий целые числа. Использовать дополнитель* ные массивы нельзя....

Удалить из массива A[N] вс отрицательные элементы.Удаление отрицательных элементов массива оформить в виде функции
Что исправить? #include &lt;stdio.h&gt; #define N 10 int udalenie(int A,int k ) { int i; ...

Удалить из массива все отрицательные элементы
удалить из массива все отрицательные элементы . под удалением элемента следует понимать :...

4
5 / 5 / 0
Регистрация: 01.11.2010
Сообщений: 97
02.11.2010, 07:35 2
почему бы вам если елемент неотриц. не копировать его в другой массив?

Добавлено через 3 минуты
зачем "к" уменьшать?
1
C/C++
93 / 93 / 18
Регистрация: 01.07.2010
Сообщений: 281
02.11.2010, 09:33 3
Так пойдёт?
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define MIN -50
#define MAX 50
#define SIZE 100
 
int main(int argc, char *argv[])
{
    srand(time(0));
    
    int mass[SIZE];
    int i,newsize;
    int newmass[SIZE];
    
    for (i=0;i<SIZE;i++)
        mass[i]=rand()%(MAX-MIN)+MIN;
    
    printf("Исходный массив:\n");
    for (i=0;i<SIZE;i++)
        printf("%d ",mass[i]);
    
    newsize=0;
    printf("\nОбработка...\n");
    for (i=0;i<SIZE;i++)
        if (mass[i]>=0)
            newmass[newsize++]=mass[i];
        
    printf("Полученный массив:\n");
    for (i=0;i<newsize;i++)
        printf("%d ",newmass[i]);
    printf("\n");
    
    return 0;
}
2
Эксперт С++
5042 / 2621 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 1
02.11.2010, 10:46 4
Еще один вариант (с помощью неполной сортировки, динамической памяти и realloc)
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
52
53
54
55
#include <stdlib.h>
#include <stdio.h>
 
int main()
{
        int *src_arr = NULL;
        int *dst_arr = NULL;
 
        int i = 0;
        int j = 0;
        int buf = 0;
        int srcsize = 10;
        int dstsize = 0;
 
        if((src_arr = (int *)calloc(srcsize, sizeof(int))) == NULL) {
                fprintf(stderr, "can't allocated memory\n");
                exit(1);
        }
 
        for(i = 0; i < srcsize; ++i) {
                src_arr[i] = rand() % 100 - rand() % 100;
        }
 
        printf("source array: ");
        for(i = 0; i < srcsize; ++i) {
                printf("%d ", src_arr[i]);
        }
        printf("\n");
 
        for(i = 0; i < srcsize; ++i) {
                if(src_arr[i] < 0) {
                        for(j = i; j < srcsize - 1; ++j) {
                                buf = src_arr[j];
                                src_arr[j] = src_arr[j + 1];
                                src_arr[j + 1] = buf;
                        }
                }
        }
 
        for(i = 0; i < srcsize && src_arr[i] >= 0; ++i, ++dstsize);
        if((dst_arr = realloc(src_arr, sizeof(int) * dstsize)) == NULL) {
                fprintf(stderr, "can't reallocated memory\n");
                free(src_arr);
                exit(1);
        }
 
        printf("destiny array: ");
        for(i = 0; i < dstsize; ++i) {
                printf("%d ", dst_arr[i]);
        }
        printf("\n");
 
        free(dst_arr);
        return 0;
}
1
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 30
21.10.2012, 13:28 5
Цитата Сообщение от fasked Посмотреть сообщение
Еще один вариант (с помощью неполной сортировки, динамической памяти и realloc)
Здравствуйте, можете пояснить строки с использованием realloc и чуть-чуть прояснить ваш алгоритм, я его не до конца понимаю...
Заранее Благодарен!(+)
0
21.10.2012, 13:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2012, 13:28
Помогаю со студенческими работами здесь

Удалить из массива все отрицательные элементы
Создать динамический массыв. Розмерность массыва ввести из клавиатуры. Задание: Удалить из массыва...

Удалить из массива все отрицательные элементы;
Удалить из массива все отрицательные элементы;

Удалить все отрицательные элементы массива
У меня есть динамический масив... Как удалить все отрицательние елементи? if(mass&lt;0) а дальше?

Массив: Удалить из массива все отрицательные элементы.
Задан массив размера N. Удалить из массива все отрицательные элементы.

1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного массива. Удалить из массива все строки с отрицательными э
1. Написать функцию проверяющую есть ли отрицательные элементы в указанной строке двумерного...

Из массива вещественных чисел удалить все отрицательные элементы
Помогите пожалуйста с кодом для этой программы.(Только чтобы он был максимально простым и понятным...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru