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

Изменение размера массива - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрица. Поменять местами элементы главной диагонали максимальными элементами ряда. http://www.cyberforum.ru/cpp-beginners/thread105960.html
Матрица. Поменять местами элементы главной диагонали максимальными элементами ряда. Матр, заполняеться рандомом, заранее спасибо! //матрица прямоугольная.
C++ образовать новый массив Дан массив, состоящий из n натуральных числе. Образовать новый массив, элементами которого будут элементы исходного, оканчивающиеся на цифру k. http://www.cyberforum.ru/cpp-beginners/thread105957.html
Указатели (работа со строками) C++
Примечание: Вариант задания реализовать в виде ф-ции, использующей для работы со строкой только указатели и операции вида *p++, p++ и тд. Если ф-ция возвращает строку и ее фрагмент, то это так же необходимо сделать через указатель. А теперь сами задания (помогите, плиз): 1. Ф-ция находит в строке пары одинаковых фрагментов и возвращает указатель на первый. С помощью ф-ции найти все пары...
Определить, является ли палиндромом часть строки s, начиная с i-го символа и заканчивая j-ым (рекурсия) C++
Разработать рекурсивную функцию, возвращающую значение, определяющую:является ли палиндромом часть строки s,начиная с i-го символа и заканчивая j-м... БОже...это гадость =((((((((( Добавлено через 2 минуты ах, да...на С++
C++ контейнер queue http://www.cyberforum.ru/cpp-beginners/thread105942.html
здравствуйте , хотелось бы узнать как полечить доступ к элементам контейнера queue и как вывести элементы этого контейнера) помогите плиз)
C++ Работа с текстовым файлом Дан текстовый файл, фразы в котором отделены друг от друга точками, а слова – пробелами и знаками препинания. Удалить из этого файла лишние пробелы, оставив по одному между словами. Добавлено через 21 час 32 минуты некому помочь ? :( подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.03.2010, 14:58     Изменение размера массива
Без извращенной функции
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
56
57
58
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
 
/*
    Изменение размера массива
*/
 
#define min(a,b) (((a) < (b)) ? (a) : (b))
 
// Заполнение массива случайными значениями
void random(int * a, int size)
{
        while(size--)
                *a++ = rand() % 9 + 1;
}
// Вывод массива на экран
void output(int * a, int size)
{
        while(size--)
                printf("%d ", *a++);
        printf("\n");
}
 
int main()
{
        int a_size = 10,        // Размер исходного массива 
                i = 0, j = 0;   // Счетчики
 
                
        // Выделение памяти под исходный массив
        int * a = (int * )malloc(sizeof(int) * a_size);
        // Заполнение исходного массива случайными значениями
        random(a, a_size);      
        // Вывод массива на экран
        output(a, a_size);
 
        // Ввод нового размера
        int b_size = 0;
        printf("Enter new Size: ");
        scanf("%d", &b_size);
        
        // Выделение памяти под новый массив
        int * b = (int * )malloc(sizeof(int) * b_size);
        memset(b, 0, sizeof(int) * b_size);
        
        // Копирование
        memcpy(b, a, sizeof(int) * min(a_size, b_size));
        
        // Освобождение памяти из под исходного массива
        free(a);
        
        // Вывод нового массива
        output(b, b_size);
        
        // Память освобождать надо всегда!
        free(b);
}

С функцией
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
56
57
#include <stdlib.h>
#include <stdio.h>
#include <memory.h>
 
/*
    Изменение размера массива
*/
 
#define min(a,b) (((a) < (b)) ? (a) : (b))
 
// Заполнение массива случайными значениями
void random(int * a, int size)
{
        while(size--)
                *a++ = rand() % 9 + 1;
}
// Вывод массива на экран
void output(int * a, int size)
{
        while(size--)
                printf("%d ", *a++);
        printf("\n");
}
// Изменение размера массива
int * resize(int * a, int newsize, int oldsize)
{
    int * b = (int * )malloc(sizeof(int) * newsize);
    memset(b, 0, sizeof(int) * newsize);
    memcpy(b, a, sizeof(int) * min(oldsize, newsize));
 
    free(a);
    
    return b;
}
 
int main()
{
        int a_size = 10; 
                
        int * a = (int * )malloc(sizeof(int) * a_size);
        random(a, a_size);      
        output(a, a_size);
 
        // Ввод нового размера
        int b_size = 0;
        printf("Enter new Size: ");
        scanf("%d", &b_size);
        
        // Тут применяем изврат
        a = resize(a, b_size, a_size);
        a_size = b_size;
        
        // Вывод нового массива
        output(a, a_size);
        
        free(a);
}
 
Текущее время: 04:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru