Tudnátok segíteni a programozás házimban? (C)
A feladat: A titkosito fuggveny parametere ket karaktertomb, egy bemenet es egy
kimenet. A titkositando uzenet a bemenetben van, a titkositottat a kimenetbe
kell elkesziteni. A fuggveny szamolja meg, hogy a bemenet szavai hany
betusek, es ezeket a szamokat írja sorrendet tartva a kimenet elejere. Az
egyszeruseg kedveert minden bemenet maximum 9 betus szavakat tartalmaz. Egy
szonak szamitunk minden karaktert ket space kozott. (Tehat pl. az irasjelek
a szohoz tartoznak. A maganyos karakterek, mint pl. a gondolatjel, egybetus
szonak szamitanak.) Ez utan a fuggveny a bemenet minden szavat forditsa meg,
es space nelkul, sorrendet tartva irja be a kimenetbe.
A kód amit nem értek miért nem működik:
void titkosit(char bemenet[], char kimenet[]) {
int bemenetHossza = 0;
int szoszam = 0;
int szohossz[99];
int a = 0;
int b = 0;
for (int i = 0; bemenet[i] != '\0'; i++) {
b++;
bemenetHossza++;
if (bemenet[i] == ' ') {
szoszam++;
a++;
b = 0;
} else {
szohossz[a] = b;
}
}
int spaceNelkuliBemenetHossz = bemenetHossza - szoszam + 2;
char spaceNelkul[spaceNelkuliBemenetHossz];
int c = 0;
for (int i = 0; bemenet[i] != '\0'; i++) {
if (bemenet[i] != ' ') {
spaceNelkul[i-c] = bemenet[i];
} else {
c++;
}
}
char forditott[spaceNelkuliBemenetHossz];
for (int i = 0; i < szoszam; i++) {
for (int j = 0; spaceNelkul[j] < szohossz[i]; j++) {
forditott[spaceNelkuliBemenetHossz - j] = spaceNelkul[j];
}
}
for (int i = 0; i < spaceNelkuliBemenetHossz + szoszam; i++) {
if (i <= szoszam) {
kimenet[i] = szohossz[i] + '0';
} else {
kimenet[i] = forditott[i];
}
}
}
A számokat gyönyörűen kiírja az elejére, de szöveget már egyáltalán nem ír. Szerintetek miért?
A kódot nem értelmeztem, és nem néztem meg működés szempontjából, de abban biztos vagyok, hogy c-ben ilyen nincs: char spaceNelkul[spaceNelkuliBemenetHossz];
Ha ilyet akarsz csinálni, dinamikus memóriakezelés kell neked, azaz malloc-free páros.
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!