C nyelven tömbbe való mentést hogyan alakítsak át struktúra által mentettre?
#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.
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");
}
Ú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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!