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

Массив удаление. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функцыя в С++ Dev\Visual http://www.cyberforum.ru/cpp-beginners/thread323137.html
Написать програму с использованием функцый 1) В котором из 3-х чисел сума непарных цыфр минимальная? Написать програму с использованием рекурсии 2)Найти значение выражения sqrt(1+sqrt(1/2+sqrt(1/3+sqrt(1/4+...sqrt(1/pow(x,n)))))) для n корней
C++ Массив сортировка по возростанию с удалением ненужных элементов. Не как не могу разобраться.Необходимо в массиве произвести сортировку чисел в порядке возрастания причем лишнии элементы удаляются, первый элемент не изменяется. Вот что я немного набрасал из того что нашел. Помогите разобраться пожалуйста. #include<iostream.h> #include<conio.h> void main () { int p,j,max=0; int a={3,2,4,6,5,7,1,9,8,11}; http://www.cyberforum.ru/cpp-beginners/thread323122.html
однонаправленный циклический список C++
Здравствуйте, помогите с теорией, дано задание: Сравнить сложность добавления элемента в начало, конец и середину однонаправленного циклического списка. За первый элемент считать элемент, на который установлен специальный указатель, а последним – следующий элемент.
На какой отметке остановится мотоциклист через определенное время? C++
Длина Московской кольцевой автомобильной дороги —109 километров. Байкер Вася стартует с нулевого километра МКАД и едет со скоростью vкилометров в час. На какой отметке он остановится через t часов? Программа получает на вход значения v и t. Если v>0, то Вася движется в положительном направлении по МКАД, если же значение v<0, то в отрицательном. Программа должна вывести целое число от 0 до...
C++ Генерация PNG (проблема) http://www.cyberforum.ru/cpp-beginners/thread323059.html
//test3.cpp //---------------------------------------------------------- // #pragma pack(1) #include <stdio.h> #include <stdlib.h> struct _IHDR {
C++ Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали Доброго времени суток. Имеется задача: Дан вещественный массив А. Заменить каждый нулевой элемент главной диагонали максимальным элементом побочной диагонали. Подсчитать количество нулевых элементов главной диагонали. Заранее спасибо! подробнее

Показать сообщение отдельно
voral
361 / 341 / 46
Регистрация: 16.03.2008
Сообщений: 1,735
20.06.2011, 16:10     Массив удаление.
Цитата Сообщение от xAtom Посмотреть сообщение
C
1
2
3
4
5
...
int del = 5;
memcpy(arr, arr +del, (size - del) * sizeof(int));
size -= 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
#include <stdio.h>
#define MAXSIZE 15
void main(void) {
        int  arr[MAXSIZE+3];
        int  i = 0;
        int left=0,right=MAXSIZE-1;
 
        for(i = 0; i < right; i++)
                arr[i] = 5 + rand() % 20;
 
 
        for(i= left; i < right; i++)
                printf("%d, ", arr[i]);
 
        puts("\ndelete first - 5 element");
 
        left=5;
        for(i= left; i < right; i++)
                printf("%d, ", arr[i]);
 
        puts("\nadditem-3 new element");
 
        for(i = 0; i < 3; i++)
                arr[i+right+1] = 5 + rand() % 20;
            
        right+=3;
        for(i= left; i < right; i++)
                printf("%d, ", arr[i]);
}
А если вывод на экран убрать в функцию. А последние 3 элемента добавить в первом цикле фактически. То программа будет весьма короткая, визуально выдвавать правильный результат.

Добавлено через 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
#include <stdio.h>
#define MAXSIZE 15
int  arr[MAXSIZE+3];
void printArr(int begin, int end)
{
    int  i;
    for(i= begin; i < end; i++)
        printf("%d, ", arr[i]);
}
void main(void)
{
    int  i;
    for(i = 0; i < MAXSIZE; i++)
        arr[i] = 5 + rand() % 20;
 
    printArr(0,MAXSIZE);
 
    puts("\ndelete first - 5 element");
    printArr(5,MAXSIZE);
 
    puts("\nadditem-3 new element");
    printArr(5,MAXSIZE+3);
}
 
Текущее время: 01:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru