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

Неправильный указатель - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить сумму элементов массива, которые являются четными числами http://www.cyberforum.ru/cpp-beginners/thread1057047.html
ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ 1. Вычислить сумму элементов массива, которые являются четными числами и индексы которых делятся на 3. 2. Из двух массивов разной длины сформировать общий массив и вычислить сумму четных элементов, индексы которых есть полные квадраты. 3. Определить сумму элементов массива. являющихся трехзначными числами.(с совпадающими первой и последней цифрами) и включая...
C++ Вычислить вектор по формуле Добрый вечер, уважаемы программисты. Делал уже идентичные задачи в visual studio, но вот с этим никак разобраться не могу:( я бы спросил в универе, но задание нужно сдать уже завтра утром, поэтому на вас последняя надежда, помогите с кодом, пожалуйста) http://www.cyberforum.ru/cpp-beginners/thread1057034.html
Определить класс список C++
Помогите пожалуйста с этой задачей, сколько пытаюсь ну никак не могу подружиться со списком... Собственно сама задача: "Определить класс список однонаправленный с перегруженными операциями ++ вперед по списку, -- удалить элемент, на котором стоит указатель, += с другим списком и с новым элементом, - унарный удаляет с конца списка, =, ==, !=, >, <, <=, >=. Ввод, вывод в поток. () - выдает...
C++ Маленький косяк с шаблоном класса
Задание: Разработать шаблонный класс для работы с очередью. Должны быть реализованы операции включения и выборки значений из очереди. Очередь реализовать в виде двусвязного списка. Проблема: Написал все это дело без шаблонов все четко работает, но когда засунул темплейты вылазит такая шляпа 1>------ Построение начато: проект: двусвязный список с шаблоном, Конфигурация: Debug Win32...
C++ Перевернуть массив http://www.cyberforum.ru/cpp-beginners/thread1057012.html
В завершении это программы нужно «перевернуть массив» - поменять первый элемент с последним, второй с предпоследним и т.д, но никак не получается #include <cstdlib> #include <iostream> #include <math.h> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std;
C++ Не получается сделать задачу на сортировку массива даже не понимаю с чего приступиться тут 1. В деканате составлена ведомость , в которой указаны фамилия студентов, название предметов и количество прогулов по каждому предмету. Вывести на экран фамилии студентов в порядке увеличения их суммарного числа прогулов по всем предметам. (в этой задаче преподаватель разрешил заменить фамилии студентов и названия предметов цифрами). подробнее

Показать сообщение отдельно
Hrollo
34 / 34 / 6
Регистрация: 05.11.2013
Сообщений: 147
25.12.2013, 23:50     Неправильный указатель
Всем доброго времени суток. Возникла проблема со строками. Пытаюсь создать функцию которая будет удалять из строки все символы в заданном промежутке(она на удивление работает). Возник вопрос, когда я запустил ф-цию через отладчик то при создании указателя на новую строку в отладчике у меня появляется сообщение что создан неправильный указатель(как оказалось позже в функции мейн при создании строки тоже появляется такое сообщение), если не трудно подскажите почему указатель неправильный и как это исправить? вот код программы.
PS:В аналогичной функции для числового массива указатель содается правильно.
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
#include <iostream>
#include <conio.h>
#include <cstring>
#include <Windows.h>
 
using namespace std;
 
char *del(char s[],int begin, int end)//функция удаляет из строки символы от бегин до енд
{
    int size = strlen(s)+1;//подсчет размера строки + нулевой байт
    size-=(end-begin);//вычисление размера для нового массива
    char *str = new char[size];//создание нового массива
    int j = 0;//переменная для смещения символов
    str[size-1]='\0';//завершение строки нулевым байтом
    for(int i(0);i<size;i++)
    {
        if(i==begin)//если и = бегин то присвоить значение для j разницу между end и begin
            j = end - begin;
        str[i]=s[i+j];
    }
    cout<<str<<endl;
    delete []s;//удаление старого массива
    return str;//возвращение нового массива
}
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int size = 100;
    char *str = new char[size];// на отладчике появляется сообщение что str - это неправильный указатель, аналогично и в функции дел
    cout<<"Enter string:";
    cin.getline(str,size);
    int begin,end;
    cout<<"Enter begin:";
    (cin>>begin).get();
    cout<<"Enter end:";
    cin>>end;
    cout<<str<<endl;
    str = del(str,begin,end);
    delete [] str;
    _getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru