@Ogurchik-007

Почему в массив записываются числа не и указанного диапазона?

Написал код, элементы массива должны задаваться рандомно в указанном диапазоне, но при выводе массива числа рандомные.
#include<iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>
using namespace std;

void inputArray(int *p, int k); // Функция инициализации массива

void printArray(int B[14][24], int i, int j) { // Функция для вывода массива
	for (i = 0; i < 24; i++) {
		for (j = 0; j < 14; j++) {
			cout<<setw(5)<<B[i][j];
		} 
		cout<<endl;
	}
}

void processingArray(int *B[0], int k, int i, int j) { // Функция для обработки массива 
	for (i = 0; i < 24; i++) {
		for (j = 0; j < k; j++) {
			if (B[i][j] > 0) {
				B[i][j] = 0;
			}
			else {
				B[i][j] = B[i][j] * -10;
			} 
		} 
	};
}

int main() {
  setlocale(LC_ALL, "Russian");
  const int n = 14;
  const int m = 24;
  int B[n][m], i=0, j=0;


	
	
  for(i = 0; i < n; i++){
  	inputArray(B[i], m);
  	for (j = 0; j < m; j++){
  		cout<<setw(12)<<B[i][j];
	  }
	cout<<endl;
  }

  cout<<endl<<endl;
  

  
  

}

void inputArray(int *p, int k) {
	srand(time(0));
	*p = (rand( )%100 - 50);
	for (int i = 1; i < k; i++) {
		*(p + i) = -i * * (p + i - 1);
	}
}
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 2
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
*p = (rand( )%100 - 50);
for (int i = 1; i < k; i++) {
  *(p + 1) = -i * * (p + i - 1);
}


Можете вообще объяснить, что этот код делает? Зачем он это делает? Что вы хотели, чтобы он делал?

Помимо этого, вместо *(p+X) можно писать p[X]. Так понятнее. У вас тут явно не к месту арифметика указателей приплетена.

А так, код работает так, как написан. Первое число в массиве заполняется случайным от -50 до 49, второе число много раз переписывается чем-то умноженным на какое-то другое число массива, остальные числа не заполняются вообще.

Поскольку массив у вас локальный, то он нулями не инициализируется. Поэтому там изначально случайный мусор. Поэтому все, кроме первого элемента так и будет случайным мусором.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вы заполняете только p[0] и p[1], остальные ячейки массива остаются неинициализированными.
Судя по всему, вы криво набрали текст с какого-то видеоурока, и, вместо *(p + i) написали *(p + 1).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы