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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Panda91
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
#1

Указатели и одномерный массив - C++

03.03.2010, 21:04. Просмотров 1592. Ответов 19
Метки нет (Все метки)

Нужно создать одномерный массив целых чисел. Причем размерность массива должна храниться в файле с разрешением .txt (насколько я поняла это надо сделать с помощью указателя). Нужно чтобы было возможно удалять числа из конца массива, а после измененный массив сохранять в другом файле с разрешением .txt
Если можете помогите... и объясните пожалуйста... я примерно алгоритм понимаю, но сформировать всё не могу...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2010, 21:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатели и одномерный массив (C++):

Одномерный массив и указатели - C++
Даны два одномерных массива (А и В).Нужно сформировать массив С, состоящий из элементов массива А,которые не включаются в В. Все операции с...

Одномерный массив и указатели - C++
Доброго времени суток! Очень нужно написать программку на Си... Вот условие: Если сумма элементов, расположенных левее минимального...

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов? - C++
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;// выделил для первой строки матрицы два...

Отсортировать массив и вывести на экран (массивы и указатели на указатели) - C++
Даны массивы F-фамилий студентов и S-результаты сессии (5 оценок) , причем s- результат сессии F студента. Отсортировать массив S по...

Матрица и одномерный массив (Составить одномерный массив, содержащий количество буквенных символов в каждом из ее столбцов, подсчет символов) - C++
Помогите решить задачку: Дана матрица 5х7, элементами которой являются значения символьного типа. Составить одномерный массив, содержащий...

Как в массив скопировать массив, который заполнен через указатели - C++
Есть два файла допусти. Суть вопроса в том, что находится во втором файле. Как записать? car.h struct car { float massiv; ...

19
Gemor
161 / 22 / 3
Регистрация: 05.02.2010
Сообщений: 207
03.03.2010, 21:10 #2
вот когда-то писал матрицы при помощи указателей, может разберешься сама, а как писать в файл ищи в гугле
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
#include <iostream.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
    int **pmat; int *pv; int *pvn, *max;  // объявление указателей на массивы
    int R; // размерность матрицы и векторов
    cout<<"Vvedite razmernost' matricy: "<<endl; // предлагаем ввести пользователю размерность
    cin>>R; // присваиваем переменной R размерность
    pmat = new int *[R];  // создаём массив указателей
    max = new int[R];   //указатель на массив элементов
    for (int i = 0; i < R; i++)
    {
        *(max + i) = 0; //обнуляем массив, нужен для нахождения максимального элемента строки матрицы
    }
    for (int i = 0; i < R; i++)
    {
        *(pmat + i) = new int[R]; //создаём матрицу указателей
    }
    pv = new int[R]; pvn = new int[R];  //вектор, указанный пользователем, и получившийся в результате умножения новый вектор
    randomize(); //чтобы числа в функции random не повторялись
    for (int i = 0; i < R; i++)  // цикл по строкам
    {
        for (int j = 0; j < R; j++) //цикл по столбцам
        {
            *(*(pmat + i) + j) = random(9); //не предлагаем ввести пользователю элементы матрицы, а заполняем случайными числами 0..9
            if (*(*(pmat + i) + j) > *(max + i))
            {
                *(max + i) = *(*(pmat + i) + j); //находим максимальный элемент строки матрицы
            }
        }
        *(pv + i) = random(9);
        *(pvn + i) = *(pv + i) * *(max + i);
        cout<<*(pvn + i)<<" ";
    }
    delete[] pmat, pv, pvn, max; //удаляем объекты
    return 0;
}
1
ISergey
Maniac
Эксперт С++
1375 / 886 / 52
Регистрация: 02.01.2009
Сообщений: 2,661
Записей в блоге: 1
03.03.2010, 21:19 #3
Цитата Сообщение от Gemor
C++
1
*(*(pmat + i) + j)
Изверг... не проще ли так..
C++
1
 pmat[i][j]
0
Panda91
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
03.03.2010, 21:22  [ТС] #4
Но тут мы предлагаем ввести размерность с клавиатуры... а как взять её из файла с разрешением .txt?
И если можно на язык С, а то С++ я вообще не знаю...
0
Gemor
161 / 22 / 3
Регистрация: 05.02.2010
Сообщений: 207
03.03.2010, 21:27 #5
а так страшнее )))

а насчет чтения из файла, я ж говорю погуглите (ну поищи на google.ru, yandex.ru и т.п. введи там чтение файла на C)
0
Panda91
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
03.03.2010, 21:48  [ТС] #6
да)) точно страшнее)) ведь мало что понятно... не можете на С передалать? или это наверное долго...
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
03.03.2010, 22:02 #7
Panda91,
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
#include <stdio.h>
#include <stdlib.h>
 
void FillRandom(int* arr, int size)
{
  int i;
 
  for(i = 0; i < size; ++i)
    arr[i] = rand();
}
 
void Show(int* arr, int size)
{
  int i;
 
  for(i = 0; i < size; ++i)
    printf("%d ", arr[i]);
 
  printf("\n");
}
 
int main()
{
  int   size;
  int*  arr  = NULL;
  FILE* file = fopen("input.txt", "r");
 
  fscanf(file, "%d", &size);
 
  arr = (int*)malloc(size * sizeof(int));
 
  FillRandom(arr, size);
  Show      (arr, size);
 
  return 0;
}
1
Panda91
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
03.03.2010, 22:07  [ТС] #8
Ну теперь буду разбираться)))
0
Gemor
161 / 22 / 3
Регистрация: 05.02.2010
Сообщений: 207
03.03.2010, 22:13 #9
тебе не всё написали панда (чуть не написал падла))

там нет возможности удалять числа из конца массива, нет возможности сохранять в файл
только создание массива с размерностью из текстового файла и показ его на консольке
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
03.03.2010, 22:16 #10
Panda91, функция сохранения массива в файл output.txt:
C
1
2
3
4
5
6
7
8
void Save(int* arr, int size)
{
  FILE* file = fopen("output.txt", "w");
 
  int i;
  for(i = 0; i < size; ++i)
    fprintf(file, "%d ", arr[i]);
}
А что подразумевается под удалением элементов с конца массива?
1
Panda91
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
03.03.2010, 22:50  [ТС] #11
Ну к примеру массив состоит из десяти элементов... а функция удаления элементов позволит удалить последний элемент... один или несколько... на сколько я понимаю если происходит удаление нескольких элементов то просто повторо несколько раз удаления одного элемента... вроде так...
0
Panda91
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
04.03.2010, 09:58  [ТС] #12
Gemor, ну мне как раз самое сложное создание массива с размерностью из текстового файла... с сохранением в другой файл я почти разобралась, а удаление... у меня есть на эту тему похожая лаба...
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
04.03.2010, 14:34 #13
Panda91, по поводу удаления, как вариант, можно просто скопировать элементы, не предназначенные для удаления в новый массив меньшего размера.
Например так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// Функция удаления n элементов массива arr размера size
// Возвращает новый массив размера size-n
int* Delete(int* arr, int size, int n)
{
  int* result = new int[size - n];
 
  for(int i = size - n - 1; i >=0; --i)
    result[i] = arr[i];
 
  delete [] arr;
 
  return result;
}
1
Panda91
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
04.03.2010, 22:14  [ТС] #14
CyBOSSeR, хм логично... надо попробовать...
0
Panda91
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 22
09.03.2010, 19:34  [ТС] #15
CyBOSSeR, вот по поводу удаления элементов... что-то я не поняла где это n, то есть количество удаляемых элементов, вводится...

Добавлено через 14 минут
Вот текст получившейся проги... я создала пару текстовых документов... в одном из них указала размерность массива... и еще добавила что n задается пользователем с клавиатуры... но выдает всё равно ошибку...

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
#include "stdafx.h"
#include <stdlib.h>
 
void FillRandom(int* arr, int size)
{
  int i;
  for(i = 0; i < size; ++i)
    arr[i] = rand();
}
void Show(int* arr, int size)
{
  int i;
  for(i = 0; i < size; ++i)
  printf("%d ", arr[i]);
  printf("\n");
}
int* Delete(int* arr, int size, int n)
{
  int n;
  printf("Vvedite kolichestvo ydalyaemih elementov n=%d", n );
  scanf ("%d", &n);
  int* result = new int[size - n];
  for(int i = size - n - 1; i >=0; --i)
    result[i] = arr[i];
  delete [] arr;
  printf("\n");
  return result;
}
void Save(int* arr, int size)
{
  FILE* file = fopen("output.txt", "w");
  int i;
  for(i = 0; i < size; ++i)
    fprintf(file, "%d ", arr[i]);
}
int main()
{
  int   size;
  int n;
  int*  arr  = NULL;
  FILE* file = fopen("input.txt", "r");
  fscanf(file, "%d", &size);
  arr = (int*)malloc(size * sizeof(int));
  FillRandom(arr, size);
  Show (arr, size);
  Delete (arr, size, n);
  Save (arr, size);
  return 0;
}
Добавлено через 23 часа 10 минут
Что же тут надо исправить??
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2010, 19:34
Привет! Вот еще темы с ответами:

Массив и указатели. Вывести на экран весь массив и на отдельной строке - значение минимального элемента массива - C++
Нужна помощь, не знаю как сделать это задание. Написать программу, которая создает массив из 10 случайных целых чисел из отрезка . Вывести...

Задача на массив и указатели.(массив из случайных чисел) - C++
Найти абсолютное значение,которое чаще остальных встречается в массиве. #include&lt;stdio.h&gt; #include&lt;time.h&gt; #include&lt;stdlib.h&gt; ...

Указатели и указатели на указатели, а также типы данных - C++
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно. Накачал литературы, буду изучать) Щас...

Указатели и массив - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; int main(int argc, char *argv) { const int n...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
09.03.2010, 19:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru