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

Динамический одномерный массив в функцию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ переворачивание строки http://www.cyberforum.ru/cpp-beginners/thread77566.html
программа создает копию строки и переворачивает ее. помогите кто-нибудь переделать так чтобы она строку вместе с пробелами переворачивала..а то у меня только до пробела работает // 10.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <string.h> #include <stdio.h>
C++ Динамические структуры данных и их применение в моделях процессов. Помогите пожалуста решить задачу на паскале: 1. Описать функцию, которая проверяет на равенство списки L1и L2. 2. Составить функцию, которая объединяет два упорядоченных по не убыванию списка L1 и L2 в один упорядоченный по неубыванию список L. Компоненты списков вещественные. http://www.cyberforum.ru/cpp-beginners/thread77557.html
C++ одномерные массивы. повторяющиеся элем-ы
нужно найти в массиве все эелементы встречающиеся строго 2 раза!!плз помогите нужно лабу сдавать.. #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <locale> #include <iostream> using namespace std;
C++ Определить, находятся ли данные прямые в общем положении
Здравствуйте! Помогите пожалуйста решить задачу, очень надо! Задача: Имеется n прямых на плоскости, заданных коэффициентами. Определить, находятся ли данные прямые в общем положении, т.е. все они различны, никакие две из них не параллельны и никакие три не пересекаются в одной точке. Условия: Составить программу, отображающую на экране дисплея в текстовом режиме исходные данные и требуемые...
C++ Распечатать самое длинное и самое короткое слово из строчки http://www.cyberforum.ru/cpp-beginners/thread77518.html
Помогите пожалуйста решить задачу в Си Задача: Распечатать самое длинное и самое короткое слово из строчки, введённой пользователем. Заранее благодарен! Добавлено через 51 минуту Напишите блок-схему алгоритма пл3! =)
C++ Найти два одинаковых слова в предложении Дано предложение.В нем 2 слова полностью одинаковые.Найти их. Надо только в С подробнее

Показать сообщение отдельно
viktor9006
Сообщений: n/a
21.12.2009, 21:45     Динамический одномерный массив в функцию
Здравствуйте. Программа поиска интерполяционным методом.

Никак не получается перекинуть динамический одномерный массив массив в функцию
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>
#include <io.h>
#include <iostream.h>
#include <iomanip.h>
#include <windows.h>
int rustext(char str[])
{
CharToOem(str,str);
cout << str;
}
 
int GetArray(int *mas, int &cnt,char *fn ) //функция загрузки массива из файла
{
  cnt=0;
  int v;
 
 // rustext("Введите имя файла с массивом чисел: ");
//  cin>>fn;
  rustext("\nЗагрузка массива:\n");
  ifstream fin(fn);
  while (!fin.eof()) //загрузим все элементы из файла и определим их количество
  {
    fin>>v;
    if (!fin.eof())
    {
      cnt++;
      mas[cnt]=v;
      cout<<"   "<<v;
    }
  }
  rustext("\nЗагружено ");
  cout<<cnt;
  rustext(" элементов массива.\n");
  //*mas=0;
  fin.close();
}
 
 
void ShowArray(int *mas, int cnt) //функция вывода массива на экран
{
  cout<<"[";
  for (int i=1; i<=cnt; i++) {printf("%3d ", mas[i]);}
  cout<<"]\n";
}
 
void SortArray(int *mas, int cnt) //функция сортировки массива (методом выбора)
{
  int tmp;
  int min=1;
  for (int i=1; i<cnt; i++)
  {
    min=i;
    for (int j=i; j<=cnt; j++)
    {
      if (mas[j]<mas[min]) {min=j;}
    }
    tmp=mas[min];
    mas[min]=mas[i];
    mas[i]=tmp;
  }
}
 
 
int FindValue(int *mas, int cnt, int v) //рекурсивная функция для поиска элемента в массиве
{
  int L,R,M,i;
  L=0;M=0;R=cnt-1;
  while(L<=R)
  {
  if (L==R)
  M=L ;
  else
  M=L+(R-L)*(v-mas[L])/(mas[R]-mas[L]);
 if (M<L||M>R) return (-1);
  if (mas[M]==v)  return(M);
  if (mas[M]>v) R=M-1;
  else
  L=M+1;
 
  }
return (-1)     ;
 
}
 
 
void main()
{
  int N; //количество элементов в массиве
   int v;
 int cntp=0;
  char *f="";
  rustext("Введите имя файла с массивом чисел: ");
  cin>>f;
  rustext("\nЗагрузка массива:\n");
  ifstream fin(f);
  while (!fin.eof()) //загрузим все элементы из файла и определим их количество
  {
    fin>>v;
    if (!fin.eof())
    {
      cntp++;
    }
  }
  rustext("\nЗагружено ");
  cout<<cntp;
  rustext(" элементов массива.\n");
  fin.close();
 
int *A=(int*)malloc(cntp*sizeof(int));
//int &A[];
//   int *A=new int [cntp];
// int A[256]; //массив
  rustext(" элементов массива.\n");
 // clrscr();
  rustext("\n                      < < < интерполяционный   п о и с к > > >\n\n");
  GetArray(A, N, f); //загрузи массив
 rustext("\nЗагружен следующий массив A[");cout<<N;rustext("]:\n");
  ShowArray(A, N);
 
  rustext("\nПроведем сортировку массива:\n");
  SortArray(A, N); //отсортируем массив для поиска
 
 //искомое значение
  int i; //позиция найденного элемента в массиве
 
    int j=0; //количество итераций
   rustext("Итоговый массив:\n");
    ShowArray(A, N);
   rustext("\nНайти элемент массива  v=");
    cin>>v;
 
   rustext("\nНачинаем  поиск.\n");
    i=FindValue(A, N, v);
    if (i<=0) {rustext("\nЭлемент ");cout<<v;rustext(" в массиве не найден!\n");}
    else {rustext("\nЭлемент "); cout<<v;rustext(" найден в ");cout<<i;rustext("-й позиции\n");}
 
 
 getchar ();
 getchar ();
 
}
Вкурсе что проблема где -то тут, никак не догоню как правильно сделать

C++
1
2
3
4
5
6
7
int GetArray(int *mas, int &cnt,char *fn )
{
----------------------------------
void main()
{
----------
int *A=(int*)malloc(cntp*sizeof(int));
Добавлено через 4 часа 54 минуты
Короче сам исправил, нужно было Местами строки переставить cnt++ и mas[cnt]=v. В С++ индексы элементов массивов начинаются с 0.

Исправлено:
(Интерполяционный метод поиска динамический одномерный массив в функцию чтение из файла )

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>
#include <io.h>
#include <iostream.h>
#include <iomanip.h>
#include <windows.h>
int rustext(char str[])
{
CharToOem(str,str);
cout << str;
}
 
int GetArray(int *mas, int &cnt,char *fn ) //функция загрузки массива из файла
{
  cnt=0;
  int v;
 
 // rustext("Введите имя файла с массивом чисел: ");
//  cin>>fn;
  rustext("\nЗагрузка массива:\n");
  ifstream fin(fn);
  while (!fin.eof()) //загрузим все элементы из файла и определим их количество
  {
    fin>>v;
    if (!fin.eof())
    {
 
      mas[cnt]=v;
        cnt++;
      cout<<"   "<<v;
    }
  }
  rustext("\nЗагружено ");
  cout<<cnt;
  rustext(" элементов массива.\n");
  //*mas=0;
  fin.close();
}
 
 
void ShowArray(int *mas, int cnt) //функция вывода массива на экран
{
  cout<<"[";
  for (int i=0; i<cnt; i++) {printf("%3d ", mas[i]);}
  cout<<"]\n";
}
 
void SortArray(int *mas, int cnt) //функция сортировки массива (методом выбора)
{
  int tmp;
  int min=1;
  for (int i=0; i<cnt; i++)
  {
    min=i;
    for (int j=i; j<=cnt; j++)
    {
      if (mas[j]<mas[min]) {min=j;}
    }
    tmp=mas[min];
    mas[min]=mas[i];
    mas[i]=tmp;
  }
}
 
 
int FindValue(int *mas, int cnt, int v) //рекурсивная функция для поиска элемента в массиве
{
  int L,R,M,i;
  L=0;M=0;R=cnt-1;
  while(L<=R)
  {
  if (L==R)
  M=L ;
  else
  M=L+(R-L)*(v-mas[L])/(mas[R]-mas[L]);
 if (M<L||M>R) return (-1);
  if (mas[M]==v)  return(M+1);
  if (mas[M]>v) R=M-1;
  else
  L=M+1;
 
  }
return (-1)     ;
 
}
 
 
void main()
{
  int N; //количество элементов в массиве
   int v;
 int cntp=0;
  char *f="";
  rustext("Введите имя файла с массивом чисел: ");
  cin>>f;
  rustext("\nЗагрузка массива:\n");
  ifstream fin(f);
  while (!fin.eof()) //загрузим все элементы из файла и определим их количество
  {
    fin>>v;
    if (!fin.eof())
    {
      cntp++;
    }
  }
  rustext("\nЗагружено ");
  cout<<cntp;
  rustext(" элементов массива.\n");
  fin.close();
 
//int *A=(int*)malloc(cntp*sizeof(int));
   //int &A[];
   int *A=new int [cntp];
// int A[256]; //массив
  rustext(" элементов массива.\n");
 // clrscr();
  rustext("\n                      < < < интерполяционный   п о и с к > > >\n\n");
  GetArray(A, N, f); //загрузи массив
 rustext("\nЗагружен следующий массив A[");cout<<N;rustext("]:\n");
  ShowArray(A, N);
 
  rustext("\nПроведем сортировку массива:\n");
  SortArray(A, N); //отсортируем массив для поиска
 
 //искомое значение
  int i; //позиция найденного элемента в массиве
 
    int j=0; //количество итераций
   rustext("Итоговый массив:\n");
    ShowArray(A, N);
   rustext("\nНайти элемент массива  v=");
    cin>>v;
 
   rustext("\nНачинаем  поиск.\n");
    i=FindValue(A, N, v);
    if (i<=0) {rustext("\nЭлемент ");cout<<v;rustext(" в массиве не найден!\n");}
    else {rustext("\nЭлемент "); cout<<v;rustext(" найден в ");cout<<i;rustext("-й позиции\n");}
 
 
 getchar ();
 getchar ();
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru