Új hozzászólás Aktív témák
-
DopeBob
addikt
Sziasztok, valaki ránézni, hogy mit rontok el? Nem jövök rá mi a baj. Az is lehet, hogy több sebből vérzik a dolog, egy ismerősnek próbálok segíteni vizsgára készülni, de hát eddig vak vezet világtalant Első félében C-vel veszik a kedvüket egy életre a programozástól (gépész ráadásul)
Egy 2D-s tömböt kéne feltölteni, ez lenne egy feladat eleje. A sorok számát kell bekérni, oszlop szám adott, és utána az értékeket.
#include <stdio.h>
#include <stdlib.h>
#define OPEN_HOURS 5
int main (void) {
int statDay = 0;
printf("Hany nap adatait visszuk be? ");
scanf("%d", &statDay);
int (*statData)[statDay][OPEN_HOURS]= malloc(sizeof(int[statDay][OPEN_HOURS]));
for (int i = 0; i<statDay;i++) {
for (int j = 0; j<OPEN_HOURS;j++) {
printf("Kerem az %d. nap %d elemet: \n", i,j);
scanf("%d", &statData[i][j]);
}
}
printf("\nKiiras\n");
for (int i = 0; i<statDay;i++) {
printf("%d. nap:\t", i);
for (int j = 0; j<OPEN_HOURS;j++) {
printf("(%d;%d) %d\t", i,j, statData[i][j]);
}
printf("\n");
}
free(*statData);
return 0;
}
Látszólag működik is a dolog, de a tömbben rossz helyre kerülnek az értékek és nem jövök rá miért. Ha pl 0. napra 0, 1, 2... az 1. napra 10, 11, 12-t írok akkor ezt kéne kiírnia:0: 0 1 2 3 4
1: 10 11 12 13 14de helyette ez van:
0. nap: 0 1 2 10 11
1. nap: 10 11 12 20 21
2. nap: 20 21 22 23 24
0. napon 3 és 4 helyett 10 és 11 van, 1. napon 13 és 14 helyett 20 és 21...
MZ/X
-
DopeBob
addikt
válasz kovisoft #6137 üzenetére
Megnézem, de ennél a résznél kezdem elveszteni már a fonalat Pluralsight-on csinálom a C képzéseket, pont azt monta az oktató ennél a résznél, hogy ez a legegyszerűbb módja mert egyszerű utána felszabadítani a memóriát, és ugyan úgy lehet hivatkozni egy elemet, ahogy statikus 2D tömbnél. Neten- YT-n mindenhol a for ciklussal feltöltögetős verziót láttam, azért örültem meg ennek, de hát nem megy.
Amit írtál azt hogy kell elépzelni, nem teljesen értem. Egy sort ki tudok választani egy pointerre és egy elemet egy indexel?
[ Szerkesztve ]
MZ/X
-
DopeBob
addikt
válasz kovisoft #6137 üzenetére
Ah, megvan, azt nem állítom, hogy pontosan értem de működik:
Ez nem jó:
int (*statData)[statDay] = malloc(sizeof(int[statDay][OPEN_HOURS]));
Ez ok, szépen lehet indexelni, adatok a helyükön.
int (*statData)[OPEN_HOURS]= malloc(sizeof(int[statDay][OPEN_HOURS]));
Nagyon köszi a segítséget
MZ/X
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!