Mit kell csináljak a C programomal, hogy ABC sorrendbe állitson n darab karakterláncot?
Feladat:Olvassunk be n darab nevet majd irjuk ki őket névsorban.
Adathasználat: Vektor ami karakterláncot tárol.
A beolvasás és kiiratás megyen csak a rendezés nem müködik, buborék rendezésel kéne megoldjam.
Itt a program amibe be kell irjam még a rendezést.
#include<conio.h>
#include<stdio.h>
#include<string.h>
char nevek[30][25];
int i,n;
int main()
{
printf("Add meg a nevek szamat :");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("Adj meg 1 nevet");
gets(nevek[i]);
}
printf("A nevek:");
for(i=0;i<n;i++)
printf("%s",nevek[i]);
getch();
}
A kacsacsőrök úgy jók ahogy vannak.
Rendezés:
- tudod, hogy a karakterek összehasonlíthatók, kacsacsőrrel, a kódjuk alapján, hiszen egész számokkal reprezentálják őket - ez megad egy ABC sorrendet, persze az ékezetes betűkkel lehet némi gond, de szerintem ezen nem fogsz összeveszni a tanárral
- tudsz hivatkozni az egyes string-ek egyes karaktereire
- két string-et hogyan tudsz összehasonlítani, sorrendiség szempontjából? megkeresed az első olyan karakterüket, amelyben eltérnek, és azokat hasonlítod össze - így megkapod a két string sorrendjét. (persze kezelni kell valahogy azt is, ha az egyik string rövidebb, satöbbi)
- ezt minden string párra meg kell tenned
- a vektorban pedig szépen megcseréled a stringeket az összehasonlítás alapján
Bizonyára tanultatok rendező algoritmusokról. Legalább egyről. Az jó lesz. Csak ott nyilván egész számokra értelmeztétek. Most az ott levő összehasonlító műveletet kell kibővíteni.
Buborek rendezesel kéne megoldjam megprobáltam de nem müködik.Irjam le külön fügvényekben nem tudom.
#include<conio.h>
#include<stdio.h>
#include<string.h>
char nevek[30][25],seged;
int i,n,j;
int main()
{
printf("Add meg a nevek szamat :");
scanf("%d",&n);
for(i=0;i<=n;i++)
{
printf("Add meg 1 nevet",i);
gets(nevek[i]);
}
for(i=n;i>=1;i--){
for(j=0;j<=i-1;j++){
if(nevek[j]>nevek[j+1])
{
strcpy(seged,nevek[i]);
strcpy(nevek[i],nevek[j]);
strcpy(nevek[j],seged);
}}}
printf("A nevek:");
for(i=0;i<=n;i++)
printf("%s",nevek[i]);
getch();
}
Igy mért nem müködik?
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!