Kezdőoldal » Számítástechnika » Programozás » C nyelven tömbbe való mentést...

C nyelven tömbbe való mentést hogyan alakítsak át struktúra által mentettre?

Figyelt kérdés
Van egy adatnyilvántartó programom mely tömbbe ment bizonyos számú adatot. Ezt a programot kellene átírnom, hogy mostantól ne a tömbbe, hanem a struktúrába mentse az adatokat. Hogyan vitelezzem ki? Ha szükséges másolhatok be kódrészletet is a jobb értelmezhetőség kedvéért.

2014. márc. 29. 14:37
 1/5 uno20001 ***** válasza:
Másolj, úgy jobban megértjük miről van szó.
2014. márc. 29. 14:55
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:

#include<stdio.h>

#include<stdlib.h>

#include <iostream>

#include <string>

using namespace std;

#define MAX 21



int ujember(int *a ,char *k, char *b, char *n);

int azon(int *t);

char *keres (int);

char *beoszt(int);

char neme(int);

int legnagyobb,hany;



int main(void){

int i,menu,tomb[MAX],nev,csere,sor,j,oszt,ch,ido,eves,vanmar,talalt;

int barmi,newazon[20],vege;

char newname[20][20],newname2[20][20],newbeoszt[20][20],newnem[20][10];

.

.

.

.

.

case 3: printf("Listazas\n\n");

printf("____________________________________________________________\n");

printf("Azonosito|Nevek |Beosztas |Neme |\n");

printf("____________________________________________________________\n");

for(nev=1; nev<=legnagyobb; nev++){

printf("|%d\t |%s",azon[nev],keres[nev]);

for(i=1;i<=(MAX-strlen(keres[nev]));i++){printf(" ");};

printf("|%s",beoszt[nev]);

for(i=1;i<=(MAX-strlen(beoszt[nev]));i++){printf(" ");};

printf("|%c",neme[nev]);

for(i=1;i<=4;i++){printf(" ");};

printf("| \n",neme[nev]);

}

fflush(stdin); getchar(); system ("CLS");

break;

.

.

.


Itt van egy részlet, mint látszik ez egy listázás, ami kiírja az összes tömbbe mentett adatot.

2014. márc. 29. 15:00
 3/5 A kérdező kommentje:

Inkább mégis csak beillesztem az egészet, úgy az igazi és nektek sem kell totózni, hogy most mi lehet az x-edik sorban.


#include<stdio.h>

#include<stdlib.h>

#include <iostream>

#include <string>

using namespace std;

#define MAX 21



int ujember(int *a ,char *k, char *b, char *n);

int azon(int *t);

char *keres (int);

char *beoszt(int);

char neme(int);

int legnagyobb,hany; // Hány adatunk van, hanyadik beolvasas.



int main(void){

int i,menu,tomb[MAX],nev,csere,sor,j,oszt,ch,ido,eves,vanmar,talalt;

int barmi,newazon[20],vege;

char newname[20][20],newname2[20][20],newbeoszt[20][20],newnem[20][10];

// Akkor lehet bermit modosítani, ujat bevinni, ha a foprogram "tudja" az adatokat.

int azon[MAX]={0,1,2,3,4,5,12,23,24,25,26};

char *keres[MAX]={

"Hiba!",

"Antal Pince",

"Eros Pista",

"Minden Áron",

"Papp Tímea",

"Pati Tamas",

"Erdei Magdolna",

"Kiss Klaudia",

"Kiss Adam",

"Eros Erno",

"Toth Arpad"};

char *beoszt[MAX]={"Hiba","Recepcios","Pincer","Pincer","Szakacs","Szakacs","Pincer","Szakacs","Penztaros","Takarito","Takarito"};

char neme[MAX]="HNFNFFNNFFF";

legnagyobb=10; // Hány adatunk van.

hany=0;



vege=0;

while (not vege) // Kell valamilyen ciklus, hogy mindig visszaterjen az elejere

{

printf("Kerem valasszon az alabbi menupontok kozul! :\n\nA programbol ALT+F4 kombinacioval barmikor kilephet.\n \n");

printf("1. Azonosito\n2. Nev\n3. Osszes adat kiirasa rendezve\n4. Uj adat bevitel\n5. Kereses\n6. Modositas\n7. Kilepes\n\nValasztott menupont:");

scanf("%d",&menu);

switch(menu){



case 1: printf("Azonosito\n\n");

for(nev=1;nev<=legnagyobb;nev++){printf("%d\n",azon[nev]);}

fflush(stdin); getchar();

system ("CLS");

break;



case 2: printf("Nev\n\n");

for(nev=1;nev<=legnagyobb;nev++){printf("%d. Ember neve: %s \n",nev,keres[nev]);}

fflush(stdin); getchar();

system ("CLS");

break;



case 3: printf("Listazas\n\n");

printf("____________________________________________________________\n");

printf("Azonosito|Nevek |Beosztas |Neme |\n");

printf("____________________________________________________________\n");

for(nev=1; nev<=legnagyobb; nev++){

printf("|%d\t |%s",azon[nev],keres[nev]);

for(i=1;i<=(MAX-strlen(keres[nev]));i++){printf(" ");};

printf("|%s",beoszt[nev]);

for(i=1;i<=(MAX-strlen(beoszt[nev]));i++){printf(" ");};

printf("|%c",neme[nev]);

for(i=1;i<=4;i++){printf(" ");};

printf("| \n",neme[nev]);

}

fflush(stdin); getchar(); system ("CLS");

break;



case 4: printf("Uj adat bevitel\n\n");

printf("Kerem adja meg az uj ember azonositojat: ");

scanf("%d",&newazon[hany]);

vanmar=0;

for(nev=1;nev<=legnagyobb;nev++){if (azon[nev]==newazon[hany]) {vanmar=1;}};

if (vanmar) {printf("Ilyen azonositoju ember mar letezik."); }

else

{

i=1;

while ((newazon[hany]>azon[i]) and (i<=legnagyobb)){ i++; };

for (nev=legnagyobb;nev>=i;nev--) // azonosító szerint sorban rakjuk be a tömbbe

{

azon[nev+1]=azon[nev];

keres[nev+1]=keres[nev];

beoszt[nev+1]=beoszt[nev];

neme[nev+1]=neme[nev];

}

legnagyobb++;

azon[i]=newazon[hany];

printf("Kerem adja meg az uj ember nevet: ");

scanf("%s %s",&newname[hany],&newname2[hany]);

keres[i]=newname[hany];

strcat(keres[i]," ");

strcat(keres[i],newname2[hany]);

printf("Beosztasa! : ");

scanf("%s",&newbeoszt[hany]); beoszt[i]=newbeoszt[hany];

printf("Adja meg a nemet!: ");

scanf("%s",&newnem[hany]); neme[i]=newnem[hany][0];

printf("Az adat elmentve!\n\n");

}

hany++;

fflush(stdin); getchar(); system ("CLS");

break;



case 5: printf("Kereses\n\n Adja meg a keresett ember azonositoszamat!: ");

scanf("%d",&newazon[hany]);

vanmar=0;

for(nev=1;nev<=legnagyobb;nev++){if (azon[nev]==newazon[hany]) {vanmar=1;talalt=nev;}};

if (vanmar)

{

printf("|%d\t |%s\t |%s \t\t |%c| \n",azon[talalt],keres[talalt],beoszt[talalt],neme[talalt]);

}

else

{

printf("Ilyen azonositoju ember nem letezik.");

}

hany++;

fflush(stdin); getchar(); system ("CLS");

break;



case 6: printf("Modositas\n\n");

printf("Adja meg a keresett ember azonositoszamat!: ");

scanf("%d",&newazon[hany]);

vanmar=0;

for(nev=1;nev<=legnagyobb;nev++){if (azon[nev]==newazon[hany]) {vanmar=1;talalt=nev;}};

if (vanmar)

{

printf("Kerem adja meg az ember uj nevet: ");

scanf("%s %s",&newname[hany],&newname2[hany]);

keres[talalt]=newname[hany];

strcat(keres[talalt]," ");

strcat(keres[talalt],newname2[hany]);

printf("Beosztasa! : ");

scanf("%s",&newbeoszt[hany]); beoszt[talalt]=newbeoszt[hany];

printf("Adja meg a nemet!: ");

scanf("%s",&newnem[hany]); neme[talalt]=newnem[hany][0];

printf("Az adat elmentve!\n\n");


}

else

{

printf("Ilyen azonositoju ember nem letezik.");

}

hany++;

fflush(stdin); getchar(); system ("CLS");

break;



case 7: printf("Kilepes\n\nKerem nyomjon egy billentyut a program bezarasahoz"); exit(7); break;



default: printf("Hiba, ilyen menupont nincs!"); fflush(stdin); getchar(); system ("CLS"); break;

}

}


system("Pause");

}

2014. márc. 29. 15:16
 4/5 uno20001 ***** válasza:

Úgy látom ez C++, de most mindegy.

Tehát van az embereknek egy nevük, foglalkozásuk, és nemük.


Valahogy így oldanám meg:

Csinálnék egy struktúrát egy emberre.

typedef struct{

int id;

char *nev;

char *f;

char nem;

} ember;

És lenne ebből egy tömb.


ember emberek[emberek száma];


Én legalábbis így oldanám meg.

2014. márc. 29. 15:43
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:
fflush(stdin); fúj
2014. márc. 30. 20:29
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!