---
title: "Problem.. behöver hjälp snabbt!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/65110-problem-behöver-hjälp-snabbt"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "voigtann1"
published: "2003-01-16T17:58:25.000Z"
updated: "2003-01-17T20:41:20.000Z"
replies: 6
views: 327
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/65110-problem-behöver-hjälp-snabbt"
---

# Problem.. behöver hjälp snabbt!

## #1 — voigtann1, 2003-01-16T17:58Z

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?

Permalänk: https://www.webforum.nu/p/65110

## #2 — PeW, 2003-01-16T19:08Z

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.. ;)

Permalänk: https://www.webforum.nu/p/917203

## #3 — Sang-drax, 2003-01-16T20:36Z

> **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");

Permalänk: https://www.webforum.nu/p/917265

## #4 — PeW, 2003-01-16T21:18Z

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

Permalänk: https://www.webforum.nu/p/917288

## #5 — voigtann1, 2003-01-16T21:20Z

Tackar för hjälpen! allt fungera super!

Permalänk: https://www.webforum.nu/p/917289

## #6 — Sang-drax, 2003-01-17T13:09Z

> **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);

Permalänk: https://www.webforum.nu/p/917824

## #7 — PeW, 2003-01-17T20:41Z

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  ;)

Permalänk: https://www.webforum.nu/p/918228

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/65110-problem-behöver-hjälp-snabbt
