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

Сжать массив, выбросив из него отрицательные элементы - массив становится пустым - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Из файла прочесть массив, а результат работы программы записать в файл http://www.cyberforum.ru/cpp-beginners/thread1205134.html
На практике дали задание, в котором надо из файла прочесть массив, а результат работы программы записать в файл. Как это сделать? В частности интересуют варианты записи в отдельный файл, задаваемый пользователем, и записи в тот же файл, из которого происходило чтение, без дополнительного ввода (т.е. чтобы программа не спрашивая у пользователя записала результат в исходный файл) Заранее спасибо
C++ Чтение матриц из файлов и вычисления с ними Простите, название темы перепутал. Я честно не хотел :-( На вычислительной практике дали такое задание: Из файла file1.txt считывается двумерная вещественная матрица А, из файла file2.txt считывается двумерная вещественная матрица B (размеры матриц задаются в файлах). Файлы file1.txt и file2.txt предварительно создаются программистом. 1. Реализовать функцию, вычисляющую матрицу C (C=А*B).... http://www.cyberforum.ru/cpp-beginners/thread1205126.html
C++ Определение чисел среди элементов символьного массива
На вычислительной практике дали такое задание: Составить программу обработки символьного массива. Текст считывается из файла (размер массива заранее не предопределен). Если файл пустой, должно выводиться соответствующее сообщение. Допустимо использовать только латинский алфавит (строчные и прописные буквы), цифры и специальные символы. Проверить, встречаются ли в массиве трехзначные числа...
C++ Проверить корректность числа в заданной системе счисления и перевести в другую систему счисления
На вычислительной практике дали такое задание: С клавиатуры вводятся 2 положительных целых числа: число A (в системе счисления с основанием p) и число B (в системе счисления с основанием q). Необходимо вычислить и вывести на экран число C в системе счисления с основанием r: p=5, q=6, r=3, C=A-B При вводе чисел A и B должно автоматически проверяться, является ли их форма записи числа...
C++ Сравнение первой и последней цифр числа http://www.cyberforum.ru/cpp-beginners/thread1205101.html
На вычислительной практие дали такое задание: Вводится с клавиатуры массив целых чисел (размер массива заранее не известен, вводится с клавиатуры). Числа могут быть любыми по знаку. Вывести на экран количество чисел, первая цифра которых больше последней. Использование массивов запрещается (<- ??) Как сравнивать первую и последнюю цифры? По поводу массива есть идея, что его размерность...
C++ Среди введенных четных чисел найдите максимум (М1), также найдите максимум (М2) среди нечетных чисел На вычислительной практие дали такое задание: С клавиатуры вводится произвольная последовательность целых положительных чисел. Числа вводятся до тех пор, пока пользователь не введет «0» – признак конца ввода. Среди введенных четных чисел найдите максимум (М1), также найдите максимум (М2) среди нечетных чисел и выведите на экран их произведение. Замечание: Если в последовательности введено... подробнее

Показать сообщение отдельно
NightCrack
0 / 0 / 0
Регистрация: 11.05.2014
Сообщений: 7

Сжать массив, выбросив из него отрицательные элементы - массив становится пустым - C++

11.06.2014, 00:41. Просмотров 540. Ответов 6
Метки (Все метки)

Задачка такая:
Разработать программу, обеспечивающую ввод с клавиатуры целых чисел и сохранение их в одномерном массиве. Ввод осуществляется до тех пор, пока не будет введено значение 0.
После этого необходимо "сжать" массив, выбросив из него отрицательные элементы.
Исходный массив и результат его преобразования вывести на экран монитора.

Есть решение схожей задачи, написанное в Visual Studio (собственно, на это решение я и ориентировался в своём случае):
текст схожей программы
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
using namespace std;
 
/// Òî÷êГ* âõîäГ* Гў ïðîãðГ*ììó (ГЈГ«Г*ГўГ*Г*Гї ГґГіГ*êöèÿ)
int main() {
    cout << "KR 04" << endl;
    // ÄèГ*Г*ì÷åñêèå Г¬Г*Г±Г±ГЁГўГ» (îñГ*îâГ*îé ГЁ âñïîìîãГ*òåëüГ*ûé)
    int *v = nullptr, *tmp = nullptr;
    // Г’ГҐГЄГіГ№Г*Гї äëèГ*Г* Г¬Г*Г±Г±ГЁГўГ*
    int size = 0;
    // Ââåä¸Г*Г*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ
    int x;
    // ГЋГЎГ°Г*ГЎГ*òûâГ*ГҐГ¬ ââîäèìûå Г·ГЁГ±Г«Г* äî ïåðâîãî îòðèöГ*òåëüГ*îãî
    do {
        cout << "Vvedite chislo: ";
        // Ââîäèì ÷èñëî
        cin >> x;
        // Åñëè ââåëè ïîëîæèòåëüГ*îå ÷èñëî...
        if (x > 0) {
            // ÑîçäГ*ВёГ¬ Г*îâûé Г¬Г*Г±Г±ГЁГў size + 1
            tmp = new int[++size];
            if (v != nullptr) {
                // Êîïèðóåì ñîäåðæèìîå Г±ГІГ*ðîãî Г¬Г*Г±Г±ГЁГўГ*
                memcpy(tmp, v, (size - 1) * sizeof(v[0]));
                // ÎñâîáîæäГ*ГҐГ¬ Г±ГІГ*ðûé Г¬Г*Г±Г±ГЁГў
                delete [] v;
            }
            v = tmp;
            // ÑîõðГ*Г*ГїГҐГ¬ ââåä¸Г*Г*îå Г§Г*Г*Г·ГҐГ*ГЁГҐ Гў Г¬Г*Г±Г±ГЁГўГҐ
            v[size - 1] = x;
        } else {
            cout << "Chislo ne polozhitelnoe!" << endl;
        }
    } while (x >= 0);
    // Âûâîäèì ðåçóëüòГ*ГІ
    cout << endl << "Resultat:" << endl;
    if (size > 0) {
        int idx = 0;
        for (int i = 0; i < size; i++) {
            cout << i << ": " << v[i] << endl;
            if (v[i] > v[idx]) {
                idx = i;
            }
        }
        cout << endl << "Maksimalnoe:" << endl;
        cout << idx << ": " << v[idx] << endl;
    } else {
        cout << "Net polozhitelnih chisel!" << endl;
    }
    // Г§Г*âåðøГ*ГҐГ¬ Г°Г*áîòó ïðîãðГ*ììû
    return 0;
}

Мне же нужно написать программу в BC++ 4.5, а он не понимает вот это выражение: "nullptr".

В итоге у меня получилось вот что:
Кликните здесь для просмотра всего текста
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
#include <iostream.h>
 
int *v, *tmp, size=0,x;
 
int main()
{
 cout<<"\n Ââåäèòå Г·ГЁГ±Г«Г*:";
 do
 {
  cin>>x;
  if (x!=0)
  {
    tmp=new int [++size];
    if (v!=0)
    {
     memcpy(tmp,v,(size - 1) * sizeof(v[0]));
     delete [] v;
    }
    v=tmp;
    v[size-1]=x;
  }
 }
 while (x!=0);
 cout<<v;
 return 0;
}

В 14 строке не знаю что подставить вместо нуля.
Подскажите как объявить (ну или просто сделать) пустой массив.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru