Új hozzászólás Aktív témák
-
Milgram1
aktív tag
Hali!
Kellene egy eleg egyszeru adatnyilvantarto programot csinalnom. Annyit kell tudnia, hogy adatokat bekerni, listazni, modositani, torolni es a listazasnal elotte rendezni is kell a tombbot. Annyi meg a kikotes, hogy nem lehet strukturat es dinamukus memoriat hasznalni. A következot alkottam eddig: [link] Egy kis segitsegre lenne szuksemem vele kapcsolatban, a torles es buborekos rendezesnel nem tudom, hogy mit kellene kezdenem vele.
Valaszoakt elore is koszonom! -
Milgram1
aktív tag
Most már elindul a program,a törlés része jó is, viszont mikor listáznám akkor leáll a program.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define max 100
int main () {
int azon[max];
char nevek[max][100];
int telszam[max];
int menu;
int db=0;
int i,j;
bool letezik;
bool kesz;
int a;
int keres;
char torol; //torles megerositesehez
int tmp;//ideiglenes buborekos rendezeshez
char tmp1[100];
printf("\t\t\t\t\tAdatnyilvantarto program: \n");
printf("Menupontok: \n");
Menupontok:
printf("Uj adat:(1), Kereses:(2), Adatmodositas:(3), Torles:(4), Listazas:(5), Kilepes:(6)\n");
printf("valasz: ");scanf("%d",&menu);
switch (menu) {
case 1:
printf("__________________________________\n");
printf("Uj adat felvetele\n");
do {
azon_bekeres:
printf("Adjon meg egy int tipusu azonositot: ");scanf("%d",&a);
for(int i=0;i<db;i++){
if(azon[I]==a) {
printf("Ez az azonosito mar szerepel! Adjon meg masikat!");
goto azon_bekeres;
letezik=1;[/I]
[I]}else {
letezik=0;
}
}
if (letezik==false) {
azon[db]=a;
printf("Adja meg a nevet: ");scanf("%s",&nevek[db]);
printf("Adja meg a telefonszamot: ");scanf("%d",&telszam[db]);
db++;
printf("Uj adat felvetel: (0), Menupontok: (1): ");scanf("%d",&kesz);
}
}while(kesz!=true);
goto Menupontok;
case 2:
printf("__________________________________\n");
printf("Kereses:\n");
printf("rekordok szama: %d\n",db);
printf("Adja meg a keresendo rekord azonositojat: ");scanf("%d",&keres);
i=0;
while(azon(i)!=keres) {
i++;
}
if (i==db+1) {
printf("Nem letezik rekord a megadott azonositoval!");
}else {
printf("Azonosito: %d - Nev: %s - Telefonszam: %d\n",azon(i),nevek(i),telszam(i));
}
goto Menupontok;
case 3:
printf("__________________________________\n");
printf("Adatmodositas:\n");
printf("Adja meg a modositando rekord azonositojat: ");scanf("%d",&keres);
i=0;
while(azon(i)!=keres) {
i++;
}
if (i==db+1) {
printf("Nem letezik rekord a megadott azonositoval!");
}else {
printf("Uj nev: ");scanf("%s",&nevek(i));
printf("Uj telefonszam: ");scanf("%d",&telszam(i));
}
printf("\nA modositas megtortent!\n");
goto Menupontok;
case 4:
printf("__________________________________\n");
printf("Rekord torlese:\n");
printf("Adja meg a torlendo rekord azonositojat: ");scanf("%d",&keres);
for(i=0;i<db;i++){
if(keres==azon(i))break;
}
if(db==i)printf("Nem létezik a megadott azonosito!");
else{
printf("Biztos torlni akarja a megadott rekordot? (%d - %s - %d)(1-Igen/0-Nem)",azon(i),nevek(i),telszam(i));scanf("%d",&torol);
if(torol==1) {
for(;i<db;i++){
strcpy(nevek(i), nevek[i+1]);
telszam(i)=telszam[i+1];[/I]
[I]}
}else {
break;
}
}
db--;
goto Menupontok;
case 5:
printf("__________________________________\n");
printf("Listazas:\n");
//Buborék rendezés
for(int i=0;i<db-1;i++) {
for(int j=0;db-i-1;j++) {
if(azon[j]<azon[j+1]) {
tmp=azon[j];
azon[j]=azon[j+1];
azon[j+1]=tmp;
strcpy(tmp1, nevek[j+1]);
strcpy(nevek[j], nevek[j+1]);
strcpy(nevek[j+1], tmp1);
tmp=telszam[j];
telszam[j]=telszam[j+1];
telszam[j+1]=tmp;[/I]
[I]}
}
}
printf("Azonostio - Nev - Telefonszam\n");
for(int i=0;i<db;i++) {
printf("%d - %s - %d\n",azon(i),nevek(i),telszam(i));[/I]
[I]}
goto Menupontok;
case 6:
break;
}
}[/I]
[I]A cserével lenne valami gond?[/I][ Szerkesztve ]
-
Milgram1
aktív tag
Szoktam, csak ez a beillesztés most nem jött össze.
-
Milgram1
aktív tag
Hali!
Kaptam egy olyan házi feladatot, hogy egy korábbi adatnyilvántartó programomat kell átírnom úgy hogy rekordok tárolásához struktúrát használjak, és mindenhez függvényt kell. Ez meg is van viszont a problémám az, hogy a keresés, és módosítás rész sehogy sem akar össze jönni, vagyis ha olyan azonosítóra keresek ami nem létezik akkor vagy kifagy a program vagy pedig csak kiír valamit ami egyébként nincs benne. Próbáltam már több módot, a törlés részből másoltam akkor sem volt jó szóval nem nagyon tudok vele már mit kezdeni.más: Az miért van, hogy a code::blocks rendesen megjeleníti ahogy elterveztem, viszont nem működik a program? ez alatt azt értem, hogy amikor új adatot akarok megadni akkor folyamat csak új azonosítót kér, a devC++ meg fordítva.
-
Milgram1
aktív tag
válasz BTminishop #5797 üzenetére
Értem, köszönöm!
-
Milgram1
aktív tag
Üdv!
Egy kis segítségre lenne szükségem utolsó beadandómhoz. Feladat a következő: Adatnyilvántartó program, ami a következőket tudja: új adat megadás, keresés, módosítás, törlés, listázás és egy bináris fájlba kell kiírnom a rekordokat meg onnan kell visszaolvasni a program indulásakor. Ezen kívül még a program futása közben láncolt listában kell tárolnom a rekordokat. Egy rekord 3 adatból áll. Egy integer azonosító, és egy név meg telefonszám ami karaktertömb. Na most jöjjön a probléma: A program nagyrészt megvan viszont a fájlba írás/olvasás(194 és 209 sor) nem működik mert egyrészt nem fut le valami hiba miatt az a rész másrészt meg így nem is tudom hogy jó lenne-e.A másik meg az adatbevitelnél le kell ellenőriznem hogy létezik-e a megadott azonosító amire van egy bool fv(100 sor) aminek visszatérési értéke true ha létezik és addig kellenek kérnie az azonosítót amíg nem hamis viszont tovább megy. Igazán nagyra értékelném ha valaki besegítene mert ezek hiányznak.
[link][ Szerkesztve ]
-
Milgram1
aktív tag
Így próbálkoztam, ahogy az új adatnál van de kifagy mikor elindul. Hogy őszinte legyek ennél a láncolt listás dolognál kicsit elmaradtam.
void fajlolvasas()
{
FILE *fp;
fp=fopen("data.BIN","r+b");
if(fp==NULL)
{
fp=fopen("data.BIN","w+b");
}
else
{
fseek(fp,0,SEEK_SET);
uj=(struct nevek*)malloc(sizeof(struct nevek));
fread(&uj,sizeof(nevek),1,fp);
elozo=NULL;
aktualis=elso;
while(!feof(fp))
{
fread(&uj,sizeof(nevek),1,fp);
aktualis=aktualis->kovetkezo;
}
fclose(fp);
}
}[ Szerkesztve ]
Ú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!
Állásajánlatok
Cég: Alpha Laptopszerviz Kft.
Város: Pécs
Cég: Ozeki Kft.
Város: Debrecen