Har några "uppgifter":
1. jag ska göra ett program som räkna ord, detta är inte problemet.. men det står sen "för att beräkna antal tecken i strängen så ska man räkna tecken ändta tills man stöter på nolltecknet, dvs '\0'. en while-loop är rimlig att använda.
#include <iostream.h>
#include <conio.h>
void main()
{
char ord[40];
int rakna;
cout << "Mata in ett ord: ";
cin.get(ord,40);
cin.ignore(1000,'\n');
while (ord[0] != '\0')
{
rakna = strlen(ord);
cout << "Ordet " <<ord <<" innehaller " << rakna <<" bokstaver." <<endl;
cout << "Mata in ett ord: ";
cin.get(ord,40);
cin.ignore(1000,'\n');
}
getch();
}
nästa..:
jag har en sträng som heter namn[] = "Sten den store"
nu ska "store" ändras till "yngre" fick använda namn[1] = "y", namn[2] = 'n'; men detta bör man ju kunna skriva enklare
hur gör man att en sträng skrivs spegelvänt?
PeWMedlem sedan juni 200010 432 inlägg Skoluppgift va?
Tänker inte lägga upp färdig kod av den anledningen, men lite hintar kan du få..
nästa..:
jag har en sträng som heter namn[] = "Sten den store"
nu ska "store" ändras till "yngre" fick använda namn[1] = "y", namn[2] = 'n'; men detta bör man ju kunna skriva enklare
hur gör man att en sträng skrivs spegelvänt?
Du kör ju inte med STL och jag antar att ni inte ska det heller. Men du bör ju iaf leta reda på strängen som innehåller det "rätta" ordet och helt enkelt byta ut det mot andra. Men så mycket "enklare" än att ersätta bokstav för bokstav blir det inte, inte ens om du använder pekare (while(*(s++)=*(t++))!=0) . Så det enklaste sättet är att ha en färdig sträng som du ersätter med tecken för tecken.
Spegelvända blir samma sak. Ska du bara skriva ut en sträng spegelvänt är det lätt att göra
int len = strlen(ordet)-1;
for(;len>=0;len--)
cout << ordet[len];
vilket även kan användas för att kopiera in i ytterligare en sträng.. ;)
PeW skrev:
Men så mycket "enklare" än att ersätta bokstav för bokstav blir det inte,
Tja.. om
namn[] = "Sten den store"
kan man ju skriva
strcpy(namn+9,"yngre");
PeWMedlem sedan juni 200010 432 inlägg Sant om det är samma storlek på arrayerna. Ska man verkligen utgå från det (?) ... svårt att veta.. men kör till i det här fallet! :bire
Tackar för hjälpen! allt fungera super!
PeW skrev:
Sant om det är samma storlek på arrayerna. Ska man verkligen utgå från det (?) ... svårt att veta.. men kör till i det här fallet! :bire
Då säger jag så här då:
strncpy(namn+9,"yngre",5);
PeWMedlem sedan juni 200010 432 inlägg Jaja, men det är ändå samma sak som det jag skrev... fast det är en funktion i ett lib som utför samma sak. Vad som är "enkelt" är en definitionsfråga och jag ser iaf inget större besvär i att ha nån rad kod mer för att göra det så tydligt som möjligt - speciellt om det är en skoluppgift. Men som sagt så är det svårt att veta exakt vad som efterfrågades ;) ...det hade dock kanske varit bättre med
annat_ord[]="yngre";
namn[pos] = '\0';
strncat(namn,annat_ord,strlen(annat_ord));
För att slippa trassel om det nya ordet är längre än det gamla. Fast det förutsätter att ordet är sist, i annat fall blir det såklart mer. Men eftersom trådskaparen är nöjd nu, varför älta mer i detta ;)