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

Матрица Изменение - C++

Восстановить пароль Регистрация
 
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
27.07.2011, 19:03     Матрица Изменение #1
Здравствуйте! Просьба такая: "Приведите пожалуйста пример как можно расширять границы матрицы". Например из матрицы 3х3 сделать матрицу 3х4 и новый столбец добавленный сразуже обнулить. Я думаю что с помощью replace но опять такие нужен пример с хорошими пояснениями.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2011, 19:03     Матрица Изменение
Посмотрите здесь:

C++ изменение кода
изменение константы C++
Изменение данных C++
Изменение функции C++
Изменение окна... C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
27.07.2011, 19:06     Матрица Изменение #2
Никак. Только созданием новой матрицы и копированием в нее старой.
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
27.07.2011, 19:11     Матрица Изменение #3
Цитата Сообщение от neske Посмотреть сообщение
Никак.
Но можно использовать vector
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
27.07.2011, 19:15  [ТС]     Матрица Изменение #4
Цитата Сообщение от neske Посмотреть сообщение
Никак. Только созданием новой матрицы и копированием в нее старой.
По моему вы не правы границы можно расширить при помощи reloc как то так, только я не могу понять это, поэтому прошу пример. А про матрицу вы правы, это как один из вариантов.

Добавлено через 26 секунд
Цитата Сообщение от Mayonez Посмотреть сообщение
Но можно использовать vector
Пожалуйста пример
asics
Freelance
Эксперт C++
 Аватар для asics
2839 / 1776 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
27.07.2011, 19:24     Матрица Изменение #5
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
Пожалуйста пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <vector>
 
void output_matr(const std::vector<std::vector<int> > &m){
  //code
}
 
int main(){
  std::vector<std::vector<int> >  matr(3, std::vector<int>(3, 1));
  output_matr(matr);
  std::cout << "\n\n";
  for(size_t i = 0; i < 3; ++i)
    matr[i].resize(4);
  output_matr(matr);
  return 0;
}
LosAngeles
Заблокирован
27.07.2011, 19:26     Матрица Изменение #6
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
По моему вы не правы границы можно расширить при помощи reloc
только для POD типов
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
27.07.2011, 21:17  [ТС]     Матрица Изменение #7
Цитата Сообщение от asics Посмотреть сообщение
std::vector
Поясните пожалуйста std ни когда не использовал при разработке программ

Добавлено через 30 секунд
Цитата Сообщение от LosAngeles Посмотреть сообщение
только для POD типов
И что ето за POD типы?
asics
Freelance
Эксперт C++
 Аватар для asics
2839 / 1776 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
27.07.2011, 21:31     Матрица Изменение #8
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
Поясните пожалуйста std ни когда не использовал при разработке программ
http://lmgtfy.com/?q=%D0%BF%D1%80%D0...0%B5%D0%BD+std

Добавлено через 24 секунды
По второму вопросу аналогично.
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
28.07.2011, 01:19  [ТС]     Матрица Изменение #9
Цитата Сообщение от asics Посмотреть сообщение
http://lmgtfy.com/?q=%D0%BF%D1%80%D0...0%B5%D0%BD+std

Добавлено через 24 секунды
По второму вопросу аналогично.
Что ж я прочел. 1) про POD ни чего не увидел. 2) возник вопрос, там написано что для использования cin и cout необходимо подключить iostream.h и написать using namespace std, ну или писать так std:: но я только пишу iostream.h и все работает. почему?
asics
Freelance
Эксперт C++
 Аватар для asics
2839 / 1776 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.07.2011, 01:22     Матрица Изменение #10
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
почему?
Потому что, скорее всего, у вас компилятор от фирмы Borland.
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
28.07.2011, 01:31  [ТС]     Матрица Изменение #11
Вот описание и пример функции realloc, нарулил в инете, вопрос с расширение матрицы теперь снят.
Функция Перераспределяет память.

Синтаксис #include<stdlib.h>
void * realloc(void *block, size_t size);

Файл, содержащий stdlib.h и alloc.h
прототип

Описание realloc пытается сжать или увеличить
предварительно выделенный блок до размера в size
байт. Аргумент block указывает на блок памяти,
полученный при вызове функций malloc, calloc или
realloc. Если block является нулевым указателем,
realloc работает также как и malloc.

realloc изменяет размер выделенного блока памяти и
при необходимости копирует его содержимое в новый
блок.

Возвращаемое realloc возвращает адрес блока, который может от-
значение личаться от исходного. Если блок не может быть
выделен или size равно 0, то realloc возвращает
NULL.

Переносимость realloc доступна в системах UNIX и поддерживается
стандартом ANSI C.

Смотрите также calloc, farrealloc, free, malloc.

Пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<string.h>
#include<alloc.h>
 
int main(void)
{
   char *str;
   /* выделить память под строку */
   str = malloc(10);
   /* скопировать в строку "Hello" */
   strcpy(str,"Hello");
   /* вывести строку */
   printf("Строка: %s\n, Адрес: %p\n",str,str);
   str = realloc(str,20);
   printf("Строка: %s\n, Новый адрес: %p\n",str,str);
   /* освободить память */
   free(str);
   return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от asics Посмотреть сообщение
Потому что, скорее всего, у вас компилятор от фирмы Borland.
В точку а этот компилятор что, такой крутянский?
asics
Freelance
Эксперт C++
 Аватар для asics
2839 / 1776 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.07.2011, 01:39     Матрица Изменение #12
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
а этот компилятор что, такой крутянский?
Наоборот -- га*но.(имхо конечно)
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
28.07.2011, 01:41     Матрица Изменение #13
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
а этот компилятор что, такой крутянский?
не совсем

#include<alloc.h> убрать можно.

перед malloc и realloc нужно делать приведение типа (char*)
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
28.07.2011, 01:49  [ТС]     Матрица Изменение #14
Цитата Сообщение от OstapBender Посмотреть сообщение
не совсем

#include<alloc.h> убрать можно.

перед malloc и realloc нужно делать приведение типа (char*)
Зачем, веть там заранее объявлен указатель типа char
asics
Freelance
Эксперт C++
 Аватар для asics
2839 / 1776 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.07.2011, 01:49     Матрица Изменение #15
Цитата Сообщение от OstapBender Посмотреть сообщение
перед malloc и realloc нужно делать приведение типа (char*)
В Си не нужно, только в С++, это если ТС кодит на чистом Си.
gr_8_zizu
13 / 8 / 2
Регистрация: 07.01.2011
Сообщений: 149
28.07.2011, 01:50  [ТС]     Матрица Изменение #16
Цитата Сообщение от asics Посмотреть сообщение
Наоборот -- га*но.(имхо конечно)
Давно хотел узнать что означает имхо и все таки что в этом кампиляторе такого плохого?
asics
Freelance
Эксперт C++
 Аватар для asics
2839 / 1776 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
28.07.2011, 01:53     Матрица Изменение #17
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
и все таки что в этом кампиляторе такого плохого?
Не соответствие стандарту, я про ++.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
28.07.2011, 02:00     Матрица Изменение #18
asics, да, похоже , что так. но тем не менее.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.07.2011, 07:44     Матрица Изменение
Еще ссылки по теме:

изменение реестра C++
C++ Изменение формы
Квадратная матрица и изменение значений в ней C++

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

Или воспользуйтесь поиском по форуму:
LosAngeles
Заблокирован
28.07.2011, 07:44     Матрица Изменение #19
Цитата Сообщение от gr_8_zizu Посмотреть сообщение
И что ето за POD типы?
К POD-типам относятся:
все встроенные арифметические типы (включая wchar_t и bool);
энумераторы, т.е. типы, объявленные с помощью ключевого слова enum;
все указатели;
POD-структуры (struct или class) и POD-объединения (union), которые удовлетворяют всем нижеприведенным требованиям:
не содержат пользовательских конструкторов, деструктора или копирующего оператора присваивания (копирующий оператор присваивания – это такой нешаблонный нестатический operator=, у которого есть строго один параметр типа X, X&, const X&, volatile X& или const volatile X&, где X – тип рассматриваемой структуры или объединения);
не имеют базовых классов;
не содержат виртуальных функций;
не содержат защищенных (protected) или закрытых (private) нестатических членов данных;
не содержат нестатических членов данных не-POD-типов (или массивов из таких типов), а также ссылок.
Соответственно, все оставшиеся объектные типы являются не-POD-типами.
Примечание: наличие квалификаторов const и volatile не влияет на «POD-овость» типа.
Yandex
Объявления
28.07.2011, 07:44     Матрица Изменение
Ответ Создать тему
Опции темы

Текущее время: 15:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru