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

Ввод данных/выделение памяти (динамический символьный массив) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ найти любой прямоугольник этой матрицы с наибольшей суммой http://www.cyberforum.ru/cpp-beginners/thread729359.html
/*Задача: заполнить матрицу случайными числами, в том числе и отрицательными найти любой прямоугольник этой матрицы с наибольшей суммой. зы.не могу понять ошибку свою*/ #include <iostream> #include <cstdlib> #include <ctime> #include <conio.h> using namespace std;
C++ Оператор сравнения Надо написать программу, которая переводит фунты в стоуны, используя класс. Класс содержит перегруженные операторы мат. операций (сложение, вычитание и умножение). Также прога должна создать массив объектов класса размером в 6 ячеек, инициализировать 3 из них, и найти минимальный и максимальный элементы. Короче, вот код: Класс: #ifndef _STONEWT_H_ #define _STONEWT_H_ class Stonewt {... http://www.cyberforum.ru/cpp-beginners/thread729340.html
Агрегированние C++
Разработать класс SqArrayOfINT - двумерный массив целых чисел. Физически данный массив должен состояить из вектора массивов типа ArrayOfInt Размерность массива задавать в конструкторе. Реализовать метод доступа к элементам массива. Реализовать метод Sum - вычисление суммы чисел в массиве. Метод сортировки массива по возрастанию и по убыванию, метод сравнения двух массивов(==, !=) Метод...
Разработка основы класса C++
Есть такое задание, не могу разобраться. Помогите, пожалуйста. Разработать структуру элементов данных класса в виде динамической структуры данных (динамический массив, список, массив указателей). Разработать: * конструкторы для различных типов входных данных (без параметров, параметр-строка, параметр-массив), конструктор копирования (объект из объекта) и деструктор; * методы вывода и ввода...
C++ Вычислить сумму только отрицательных из 3 чисел http://www.cyberforum.ru/cpp-beginners/thread729328.html
Вычислить сумму только отрицательных из 3 чисел Помогите очень нужна на завтра!
C++ задача по массивам с указателем с++(Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки) Задана матрица С(5,5). Поменять местами максимальный элемент каждой строки с первым элементом соответствующей строки подробнее

Показать сообщение отдельно
WildSpirit
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 8
12.12.2012, 19:46     Ввод данных/выделение памяти (динамический символьный массив)
1. Если ли разница в таких двух вариантах объявления динамического символьного массива:
а)
C++
1
char *string = (char*) malloc(N);
б)
C++
1
char *string = new char [N];
?
2. Почему-то не работает перераспределение памяти. Пишу так:
C++
1
string = (char*) realloc(string,(len-5));
Переменная len - длинна введенной строки (считается правильно, проверял). Здесь, например, я пытаюсь уменьшить на 5 байт блок, выделенный под char переменную string. Затем вывожу ее - выводится то же количество символов, что и было введено, а значит что-то не работает
3. Вот у меня вот так происходит создание и ввод данных в массив:
C++
1
2
3
scanf("%d",&N);
char *string = new char [N];
fgets(string,N-2,stdin);
а) Почему в fgets аргумент должен быть на 2 меньше, чем выделено байт (в учебнике так)? Один символ - это окончание строки \0, а второй?
б) Вот в исходном варианте после ввода количества символов в массиве (т.е. ввода переменной N) программа останавливалась, а в памяти в массиве string было только "\n". Решил проблему, вставив после scanf
C++
1
getchar();
или
C++
1
cin.ignore();
Но почему так происходит?

Заранее спасибо за помощь!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru