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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ переворачивание строки http://www.cyberforum.ru/cpp-beginners/thread77566.html
программа создает копию строки и переворачивает ее. помогите кто-нибудь переделать так чтобы она строку вместе с пробелами переворачивала..а то у меня только до пробела работает // 10.cpp :...
C++ Динамические структуры данных и их применение в моделях процессов. Помогите пожалуста решить задачу на паскале: 1. Описать функцию, которая проверяет на равенство списки L1и L2. 2. Составить функцию, которая объединяет два упорядоченных по не убыванию списка L1 и... http://www.cyberforum.ru/cpp-beginners/thread77557.html
C++ одномерные массивы. повторяющиеся элем-ы
нужно найти в массиве все эелементы встречающиеся строго 2 раза!!плз помогите нужно лабу сдавать.. #include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <locale> #include...
C++ Определить, находятся ли данные прямые в общем положении
Здравствуйте! Помогите пожалуйста решить задачу, очень надо! Задача: Имеется n прямых на плоскости, заданных коэффициентами. Определить, находятся ли данные прямые в общем положении, т.е. все они...
C++ Распечатать самое длинное и самое короткое слово из строчки http://www.cyberforum.ru/cpp-beginners/thread77518.html
Помогите пожалуйста решить задачу в Си Задача: Распечатать самое длинное и самое короткое слово из строчки, введённой пользователем. Заранее благодарен! Добавлено через 51 минуту...
C++ Программа находит макс. номер в файле... Написал программу с классами fstream, которая в определенном файле находит мин. номер и макс. номер. (в файле - только целочисленные номера) Минимальный номер находит правильно, но вместо... подробнее

Показать сообщение отдельно
viktor9006
Сообщений: n/a

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

21.12.2009, 21:45. Просмотров 624. Ответов 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
#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 ();
 
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru