Hej på er!
Här kommer jag jag med min första direka C++ fråga (det kommer att bli fler, tro mig )
Koden nedan tar ju emot ett ord och skickar sedan tillbaka det baklänges. Här är det:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
#include <iostream>
#include <cstring>
using namespace std;
const int Arsize = 20;
int main()
{
cout << "Skriv ett ord: ";
char word[Arsize] ;
cin >> word;
for (int i = strlen(word) - 1; i >= 0; i--)
cout << word;
cout << "\n";
return 0;
}
Det skapar ju en vektor med plats för 20 tecken men hur gör jag så att programmet automatiskt räknar ut hur många tecken som det finns i strängen och sedan skapar en vektor efter det? Som det är nu så fixar det heller inte mellanslag. Hur fixar man det?
Säkert jätteenkla frågor men som jag sa, mitt första program. Så om någon skulle kunna ta och modifiera koden så att den räknar ut storleken på vektor samt gör så att det fixar mellanslag så vore jag glad.
Ps. Om jag har uttryckt mig klumpig så är det därför att jag inte känner mig så hemma i alla nya C++ termer än
He he. Raden "cout << word;" i koden samt raden, "Skyll inte på mig, jag hade inte rösträtt (det saknas ett snedstreck så att det inte skall hända igen)" i min signatur skapade vissa problem därav den andra redigeringen
att den inte fixar mellanslag skulle kunna bero på att du använder cin, använd cin.getline() istället
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
cin.getline(word, Arsize);
(Första: charvekorn där den inmatade datan ska läggas, den andra: storleken på charvektorn (för att undvika att minne skrivs över pga för liten vektor...))
Ok, vektor-storleks grejen:
Eftersom du inte vet hur många tecken användaren matar in i förväg så går det inte... det är bara att se till att ha en tillräckligt stor vektor...
Ganska omständigt...
Men det kanske inte gör så mycket... fast jag skulle nog välja att allokera en statisk buffert där... Dessutom brukar man veta hur mycket text man vill ha in...
Jag tycker det är bättre att skippa char* och använda string istället, den är dynamisk och dessutom lättare att använda. Dock går det inte att läsa in en rad (ett antal tecken + newline), om man försöker använda string läser man bara ett ord, från en istream. Då måste man använda getline() och den fungerar inte med string.
/Pelle
268 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849