C++ elakadtam, valaki megoldás?
Sziasztok!
A problémám az lenne, hogy kaptunk egy házit és ennek meg kell lennie a héten.
A feladat az, hogy valamilyen adatokat (én sorszám, együttes név, album címe) fel kell vinni. A menüt már megcsináltam, adatokat szépen beviszi, listáz, keres és tudok az adatokon változtatni is.
A tanár visszadobta, hogy nem jó, mivel azonos sorszámmal több dolgot is be tudok vinni. Ezt kéne kikerülni, csak nem tudom hogyan.
bocs, hogy nem írok nagyon programozó nyelven, de még csak most kezdtük el tanulni és a tanár se a legjobb.
A program így néz ki:
#include <conio.h>
#include <stdio.h>
#include <windows.h>
struct ADAT {
char sorszam [3], egyuttes[31], album[15];
};
void beolvasas(ADAT*v,int db)
{
printf("\nKerem a sorszamot: ");
fflush(stdin);
gets((v+db)->sorszam);
printf("\nKerem az egyuttes nevet: ");
fflush(stdin);
gets((v+db)->egyuttes);
printf("Kerem az album cimet: ");
fflush(stdin);
gets((v+db)->album);
}
void modosit(ADAT* egyuttesek, int db)
{
char c, sorszam[3],egyuttes[31],album[15];
int n;
if(db==0)return;
system("cls");
printf("Hanyadik elemet kivanod modositani: ");
scanf("%d",&n);
while(n>db||n<=0)
{
printf("Hanyadik elemet kivanod modositani: ");
scanf("%d",&n);
}
fflush(stdin);
printf("Sorszam: ");
gets(egyuttesek[--n].sorszam);
fflush(stdin);
printf("Egyuttes: ");
gets(egyuttesek[--n].egyuttes);
fflush(stdin);
printf("Album cime: ");
gets(egyuttesek[n].album);
}
void listazas(ADAT*v,int db)
{
int cv;
printf("\n%2s%30s%14s\n","Sorszam","Egyuttes","Album");
for(cv=1;cv<60;cv++) printf("-");
for(cv=0;cv<db;cv++);
for(cv=0;cv<db;cv++)
{
printf("\n%2s %30s %14s",(v+cv)->sorszam,(v+cv)->egyuttes,(v+cv)->album);
}
getch();
}
void kereses(ADAT*a,int db)
{
int i;
char keresett[31],valaszt;
system("cls");
printf("\nKereses menu");
printf("\n1 - Kereses sorszam alapjan");
printf("\n2 - Kereses egyuttes alapjan");
printf("\n3 - Kereses album alapjan");
printf("\nESC - Visszalepes a fomenube");
while((valaszt=getch())!=27)
{
switch(valaszt)
{
case '1':
system("cls");
printf("\nA keresett sorszamhoz tartozo egyuttes es album: ");
gets(keresett);
for(i=0;i<db;++i)
{
if(!strcmp(a[i].sorszam,keresett))
{
do
{
printf("\nA keresett sorszamhoz tartozo egyuttes es album: %s, %s,",a[i].egyuttes,a[i].album);
printf("\nA fomenube lepeshez nyomj ESC-et!");
}
while(getch()!=27);
return;
}
}
printf("\nA keresett sorszam nem talalhato!\nNyomj ESC-et a fomenube lepeshez!");
break;
case '2':
system("cls");
printf("\nA keresett egyutteshez tartozo sorszam es album: ");
gets(keresett);
for(i=0;i<db;++i)
{
if(!strcmp(a[i].egyuttes,keresett))
{
do
{
printf("\nA keresett egyutteshez tartozo sorszam es album: %s, %s",a[i].sorszam, a[i].album);
printf("\nA fomenube lepeshez nyomj ESC-et!");
}
while(getch()!=27);
return;
}
}
printf("\nA keresett egyuttes nem talalhato!\nNyomj ESC-et a fomenube lepeshez!");
break;
case '3':
system("cls");
printf("\nA keresett albumhoz tartozo sorszam es egyuttes: ");
gets(keresett);
for(i=0;i<db;++i)
{
if(!strcmp(a[i].album,keresett))
{
do
{
printf("\nA keresett albumhoz tartozo sorszam es egyuttes: %s, %s",a[i].sorszam, a[i].egyuttes);
printf("\nA fomenube lepeshez nyomj ESC-et!");
}
while(getch()!=27);
return;
}
}
printf("\nA keresett album nem talalhato!");
break;
}
}
}
int main()
{
const int maxt=10000;
ADAT egyuttesek[maxt];
int db=0;
char valasz;
do
{
system("cls");
printf("\n1 - Beolvasas");
printf("\n2 - Modositas");
printf("\n3 - Kereses");
printf("\n4 - Listazas");
printf("\nESC - Kilepes");
valasz=getch();
switch(valasz)
{
case '1': if(db<maxt)
{
beolvasas(&egyuttesek[0],db);
db++;
}
break;
case '2': modosit(&egyuttesek[0], db); break;
case '3': kereses(&egyuttesek[0], db);
break;
case '4': if (db>0)
{listazas(&egyuttesek[0],db);}
break;
}
}while(valasz!=27);
}
Ja és ezt is pár megoldásból ollóztam össze...
na ez az, hogy ez nekem baromi kínai...
sajnos kifogtunk egy rossz tanárt, és senkit nem tudott megtanítani. Eddig azok mentek át, akik tanulták eddig.
Én kettesért megyek :S
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!