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

Написать функцию getElem, которая возвращает ссылку на i - тый элемент массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как декомпилировать DLL файл http://www.cyberforum.ru/cpp-beginners/thread645804.html
есть dll файл хотелось бы чтобы был похожий исходник на оригинал , а если точней то интересуют части кода в DLL..на счёт шифровки файла не в курсе
C++ Класс функция(линейная или квадратичная) Описать класс Математическая функция.Функция может быть линейной y=ax+b или квадратичной y=a*x*x+bx+c. Данные класса:аргумент,параметры,значение ф-ий. Методы должны обеспечивать... http://www.cyberforum.ru/cpp-beginners/thread645795.html
C++ Освобождение памяти и фишки VS
1) Откуда delete знает, сколько элементов в массиве, ведь обычный sizeof(a), где a - (допустим) int* - ничего не даст? Если "он" это знает, то значит можно, передав в функцию в аргументах int*...
массив указателей на void* C++
Здравствуйте. Сейчас пытаюсь решить задачу из книги Брюса Эккеля "Философия С++", I том. В одном из упражнений требуется передать в конструктор массив из указателей на объекты и размер этого массива....
C++ Поиск записей в БД. Метод Locate http://www.cyberforum.ru/cpp-beginners/thread645777.html
Для поиска по базе данных в своем приложении я решил воспользоваться методом Locate. Его описание я нашел в книге Архангельского, вот какой вид он имеет: TLocateOptions SearchOptions; Variant...
C++ Описать класс Друг Нужно описать класс Друг.Данные класса имя,номер телефона,важность знакомства. Методы должны обеспечить минимальную функциональность объекта подробнее

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

Написать функцию getElem, которая возвращает ссылку на i - тый элемент массива - C++

02.09.2012, 17:20. Просмотров 1143. Ответов 10
Метки (Все метки)

Задача:

Есть структура, содержащая массив и его длину. Написать функцию getElem, которая возвращает ссылку на i - тый элемент массива (i передается как параметр). Написать функцию init, которая бы записывала в этот массив случайные числа без повторений. Для генерации случайных чисел использовать функцию rand. Случайные числа должны быть не больше длинны массива умноженной на два. Для доступа к элементам массива использовать функцию getElem.
Первое решение учитильница не принила. Сказала что все не правильно. Я эту задачу перерешал в 4 варантах. Все они очень похожи. И во всех вариантах не понятно зачем нужен i, без него можно прекрасно обойтись.

Вот одно из моих решений:

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
# include <stdio.h>
# include <iostream>
# include <time.h>
# define N 20
using namespace std;
 
struct AR {int arr[N];};
 
  int& getElem(struct AR *reference,int &i)   //что бы не передавать по значению (это плохо я слышал) 
 {                                                                   // будем через ссылку i передавать
     static int printcount;
                  
  if (printcount!=0) //если счетчик не 0 то печатай массив 
      for (i;i<N;i++)               
        cout<<reference->arr[i]<<' ';
   printcount++;
   return reference->arr[i];             //возвращаем ссылку на итый элемент 
 }
  int init(int *p)   // СЮДА ПЕРЕДАЕТСЯ УКАЗАТЕЛЬ КОТОРЫЙ ИМЕЕТ ДОСТУП К ПАМЯТИ в    котором лежит массив струкуры. 
  {                           // ТАК КАК ПО УСЛОВИЮ задачи ДОСТУП к структре МОЖЕТ ОСУШЕСТВЛЯТЬСЯ ТОЛЬКО ЧЕРЕЗ функцию getelem
      
   srand(time(NULL)|clock());
   static int end;  // для того что бы значение сохранялось
   int scan=0,r;
   r=rand()%N*2;
   while (scan<N)  //scanning from 0 to N
   {      
      if (p[scan]==r) // match!
     {  
         r=rand()%N*2;
         scan=0;
         continue;
     }            
       scan++;   
    }
   p[end++] = r;       //matches no found! Тут мы заполняем массив случайными цифрами
   return 0;
 }
 
int main()
{
  struct AR reference;
  int i=0;   // раз по условию задачи i  передается как параметр то она будет здесь.
  int* p=&getElem(&reference,i);  //тут i зачем то передается как параметр.
  for (int s=0;s<N;s++)                                         
     init(p);
  getElem(&reference,i);
  cout<<endl;
return 0;
}
Народ проверьте пожалуйста правильно ли я решил?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru