2D массив печатает неправильно - PullRequest
0 голосов
/ 27 сентября 2019

Я создаю двумерный динамический массив для отслеживания транзакций в течение нескольких дней.Я создал 2D-массив и добавил транзакции.Проблема в том, что не печатает правильные транзакции.Он будет печататься правильно, если у меня будет одинаковое количество noOfdays и transcount.Пример 3 и 2. Но он меняет значения, если у меня нет noOfdays 2 и trascount 3.

Пример выходных данных, имеющих noOfdays 2 и trascount 3.

enter image description here

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[]) {

int noOfDays, transcount;
printf("Enter no of days:");
scanf("%d", &noOfDays);
printf("Enter total no of transaction:\n ");
scanf("%d", &transcount);
int *p= (int)malloc(noOfDays*transcount * sizeof(int));

int number = 0;
for (int i = 0; i < noOfDays; i++) {
  printf("Enter no of transaction per day:\n", i);
for (int j = 0; j < transcount; j++) {
  scanf("%d", &number);
  p[i*noOfDays + j] = number;
 }

}

printf("%s\n", "#Printing your 2d array:" );
for (int i = 0; i < noOfDays; i++){
 for (int j = 0; j < transcount; j++){
  int number = p[i*noOfDays + j];
  printf("%d\t", number);
}
printf("\n");
}

return 0;
}

1 Ответ

3 голосов
/ 27 сентября 2019

Возможно, ваша формула индекса в p[i*noOfDays+j] неверна.

Измените ее с p[i*noOfDays+j] на p[i*transcount+j].

Причина в том, что i - это индекстекущая группа транзакций.j - это индекс конкретной транзакции в день.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...