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

Измените структуру CStash чтобы данные хранились в объекте типа vector<char> - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Случайный вывод значений переменных http://www.cyberforum.ru/cpp-beginners/thread1012792.html
Доброй ночи, мне тут подруга дала задачку, написать программу-гадалку. Ну мол, вводишь вопрос, а она выдает "Да" или "Нет". Проблема в следующем, - никак не могу найти каким образом сделать рандом переменных. Сразу оговорюсь, что учу С++ второй день, так что больно не бейте) #include <iostream> using namespace std; int main () { setlocale (0,""); char question; char yes;
C++ Задача на работу с текстовыми файлами В качестве входных данных поступает некоторое сообщение. Все сообщения имеют общее правило: Пользователь Команда Задача следующая. По вводу данных должен вестись лог. лог должен записываться в текстовый файл.Выглядит это так: Запустили программу, вводим данные Andrey &pokasat // По нажатию Enter в текстовый файл записывается строка Andrey &pokasat 1 Maksim &zabrat // По нажатию... http://www.cyberforum.ru/cpp-beginners/thread1012789.html
C++ Определить средние значения элементов строк массива
Определить средние значения элементов строк массива M. Найти минимальное значение среди этих средних. #include<conio.h> #include <iostream> using namespace std; const int n = 3; const int m = 4; int main() { int a = {
C++ Поиск чисел Фибоначчи
Доброго времени суток! Написал программку, которая находит значение n-элемента в последовательности Фибоначчи. Изначально в ней содержалась ошибка (в последствии исправил). Когда я решил проверить программу, то получилось, что при поиске 20 элемента программа ошибалась на один элемент и показывала значение 19 элемента(но при этом корректно отображала значения). Но если я вводил <= 17 или > 21,...
C++ Объясните, как в данном примере работает friend http://www.cyberforum.ru/cpp-beginners/thread1012759.html
friend bool operator== (const String& firstStr, const String& secondStr); Если писать код без friend, то возникает ошибка: слишком много параметров для этой функции оператора. Вопрос: Объясните, как в этом примере работает friend. Что он делает.
C++ Как записать третье условие Как записать третье условие if? Оно почему-то не срабатывает совсем, если пишу число больше 100 или меньше 1... Задание: напишите код, умножающий исходное число на 2, если оно принадлежит интервалу от 1 до 100(включительно) и делится нацело на 3; в противном случае умножает на 3, если число принадлежит интервалу от 1 до 100, но не делится нацело на 3; и наконец, умножает число на остаток от его... подробнее

Показать сообщение отдельно
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
20.11.2013, 03:45     Измените структуру CStash чтобы данные хранились в объекте типа vector<char>
Измените структуру CStash чтобы данные хранились в объекте типа vector<char>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//hello.h
struct CStash{
    int size;
    int quantity;
    int next;
    unsigned char*storage;
};
 
void initialize(CStash* s, int sz);
int add(CStash*s, const void*element);
void * fetch(CStash*s, int index);
void inflate(CStash *s, int increase);
int count(CStash *s);
void cleanup(CStash *s);

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
//hello.cpp
#include"hello.h"
#include<iostream>
#include<cassert>
using namespace std;
 
const int increment=100;
 
void initialize(CStash* s, int sz){
    s->size=sz;
    s->quantity=s->next=0;
    s->storage=0;
}
 
int add(CStash*s, const void*element){
    if(s->next>=s->quantity) inflate(s,increment);
    int start=s->next*s->size;
    unsigned char * e=(unsigned char *)element;
    for(int i=0;i<s->size;i++)
        s->storage[start+i]=e[i];
    s->next++;
    return(s->next-1);
}
 
void * fetch(CStash*s, int index){
    assert(0<=index);
    if(index>=s->next) return 0;
    return &(s->storage[index*s->size]);
}
int count(CStash*s){
    return s->next;
}
void inflate(CStash *s, int increase){
    assert(increase>0);
    int NEWQ=s->quantity+increase;
    int NEWB=NEWQ*s->size;
    int OLDB=s->quantity*s->size;
    unsigned char * b= new unsigned char[NEWB];
    for(int i=0;i<OLDB;i++) b[i]=s->storage[i];
    delete [](s->storage);
    s->storage=b;
    s->quantity=NEWQ;
 
}
 
void cleanup(CStash *s){
    if (s->storage!=0){
    cout<<"free"<<endl;
    delete []s->storage;
    
    
    }
 
}
Буду рад если кто-то подскажет
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru