[ProgBC++] kompileringsfel
- Den Onde
- Medlem

Offline
- Registrerad: 2009-03-04
- Inlägg: 40
[ProgBC++] kompileringsfel
Hej igen...
Provade att göra ett snabbt utkasst med vectorer och väntade mig inte heller att det blivit rätt..
Nu undrar jag om någon kan tipsa om vart jag tänker fel?
Programmet ska översätta vanlig text till morse kod och skriva ut det på skärmen..
Koden ser ut på följande sätt:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int vectorLength();
string text[vectorLength]= {"a","b","c","d"}; //osv
string morse[vectorLength]= {".-","-..","-.-.","-.."}; //osv
int k;
for (k=0; k<= 10; k++)
{
if (text[k]= morse[k])
{
cout << "skriv text";
cin.getline(text, string[vectorLength]);
cout << morse[];
}
}
return 0;
}
Tacksam för all hjälp jag kan få.. Har intensivläst programmering nu och detta är min 4:e vecka så jag är vääldigt grön när det gäller programmering..
Tack på förhand
Senast redigerat av Den Onde (2010-02-06 22:34)
- Sebelino
- Medlem
Offline
- Från: KTH
- Registrerad: 2009-12-20
- Inlägg: 389
Re: [ProgBC++] kompileringsfel
Det är nog fält (arrays) du menar. Nu var det ett tag sen jag skrev C++ men
Kod:
int vectorLength();
vad gör denna rad? Är vectorLength en variabel så måste du ge den ett värde. Och radera parentesen.
Här ska det vara två likhetstecken:
Kod:
if (text[k]= morse[k])
Här ska det nog istället stå "morse[k]":
Kod:
cout << morse[];
För övrigt kan du skriva ihop for-satsen till
Kod:
for (int k=0; k<= 10; k++)
så behöver du inte deklarera variabeln k innan for-loopen.
Senast redigerat av Sebelino (2010-02-07 00:00)
-När jag tycker att det är kyligt i skrivsalen brukar jag sätta mig i ett av salens hörn.
-Varför det?
-För där är det 90 GRADER!
- Den Onde
- Medlem

Offline
- Registrerad: 2009-03-04
- Inlägg: 40
Re: [ProgBC++] kompileringsfel
ok då har jag lite att jobba på ![]()
Tusen tack för snabbt svar
- Den Onde
- Medlem

Offline
- Registrerad: 2009-03-04
- Inlägg: 40
Re: [ProgBC++] kompileringsfel
Nu har jag försökt ändra men blir fortfarande inte rätt...
Vad jag kan se så ligger felet här:
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int vectorLength=10;
string text[vectorLength]= {"a","b","c","d"}; //osv
string morse[vectorLength]= {".-","-..","-.-.","-.."}; //osv
for (int k=0; k<=10; k++)
{
if (text[k]== morse[k])
{
cout << "skriv text";
cin.getline(text, vectorLength);
cout << morse[k];
}
}
return 0;
}
Det ger följande kompileringsfel:
Spoiler (Klicka för att visa):
Compiling...
övningmorse.cpp
c:\c++\övningmorse\övningmorse\övningmorse.cpp(16) : error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_Elem *,std::streamsize)' : cannot convert parameter 1 from 'std::string [10]' to 'char *'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Build log was saved at "file://c:\C++\övningmorse\övningmorse\Debug\BuildLog.htm"
övningmorse - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Idéer någon? ![]()
Tack på förhand
Senast redigerat av Den Onde (2010-02-07 11:44)
- LapSiLap
- Medlem
Offline
- Registrerad: 2008-03-05
- Inlägg: 2725
Re: [ProgBC++] kompileringsfel
Varför jämför du text[k] == morse[k]? Varför vill du läsa in text om det är sant? Att jämföra om "a" == ".-" blir sällan sant heller.
- Den Onde
- Medlem

Offline
- Registrerad: 2009-03-04
- Inlägg: 40
Re: [ProgBC++] kompileringsfel
tanken var att den skulle läsa in vart värde i strängen och sedan jämför det med värdena för morse resp text,
trodde helt enkelt att detta var rätt sätt ![]()
Jag är väldigt osäker på hur jag ska dels deklerera för alfabetet och dels för morsekoden så att programmet jämför inmatningen mot respektive sträng..
Så med andra ord har jag kört fast totalt ![]()
- LapSiLap
- Medlem
Offline
- Registrerad: 2008-03-05
- Inlägg: 2725
Re: [ProgBC++] kompileringsfel
Hur skulle en morse text se ut egentligen?
Om vi tar
std::string letters = "abcdefghijklmnopqrstuvwxyz";
std::string morse[] = {".-", "-...", "-.-.", "-..", ".", "..-.",
"--.", "....", "..", ".---", "-.-", ".-..",
"--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-", ".--", "-..-",
"-.--", "--..", ".--.-",".-.-", "---."};
igen så kan man tolka tex ..-. som "eae", eller bara "f". Morse tecken måste alltså skiljas med något (?), tex med mellanslag. Och då skulle "eae" skrivas ". .- ." och man kan översätta den tillbaka till vanlig text genom att först splittra den med avseende på mellanslagen (och få ".", ".-" och ".") och försöka hitta dem i morse[]. Använda indexen för att hitta motsvarande bokstäver i letters.
Ett tips är att först förstå programmet som översätter text till morse 100% i den andra tråden innan du gör detta. Ser inte ut som om du gör det, så som du försökt skriva detta program nu.
Senast redigerat av LapSiLap (2010-02-07 18:59)
- Den Onde
- Medlem

Offline
- Registrerad: 2009-03-04
- Inlägg: 40
Re: [ProgBC++] kompileringsfel
ahaaa tänkte inte alls på att den inte skiljer på bokstav och .-- tex, jag tittar vidare på det andra programmet först så får vi se om jag återkommer igen. ![]()
Tackar för tipset.
- LapSiLap
- Medlem
Offline
- Registrerad: 2008-03-05
- Inlägg: 2725
Re: [ProgBC++] kompileringsfel
Okej skrev ett annat program som översätter -..¤.¤-.¤-.¤.-¤ ¤-¤.¤-..-¤-¤ ¤---.¤...-¤.¤.-.¤...¤.-.-¤-¤-¤...¤ ¤-¤..¤.-..¤.-..¤ ¤--¤---¤.-.¤...¤.¤-.-¤---¤-.. till vanlig text. Jag använde "¤" för att skilja mellan morse tecken.
Kod:
public class MorseToText{
private static final String letters = "abcdefghijklmnopqrstuvwxyzåäö ";
private static final String morse[] = {".-", "-...", "-.-.", "-..", ".", "..-.",
"--.", "....", "..", ".---", "-.-", ".-..",
"--", "-.", "---", ".--.", "--.-", ".-.",
"...", "-", "..-", "...-", ".--", "-..-",
"-.--", "--..", ".--.-",".-.-", "---.", " "};
public static void main(String[] args){
String tilltext = "-..¤.¤-.¤-.¤.-¤ ¤-¤.¤-..-¤-¤ ¤---.¤...-¤.¤.-.¤...¤.-.-¤-¤-¤...¤ ¤-¤..¤.-..¤.-..¤ ¤--¤---¤.-.¤...¤.¤-.-¤---¤-..";
String[] split = tilltext.split("¤");
String text="";
for(int i = 0; i< split.length; i++){
text+= morseToText(split[i]);
}
System.out.println(text);
}
static String morseToText(String str){
for(int i = 0; i < morse.length; i++){
if(str.equals(morse[i]))
return letters.charAt(i)+"";
}
return "?";
}
}Senast redigerat av LapSiLap (2010-02-08 21:07)
- Den Onde
- Medlem

Offline
- Registrerad: 2009-03-04
- Inlägg: 40
Re: [ProgBC++] kompileringsfel
Ok tackar ![]()
ska se om jag klarar att tyda ditt program.
Detta är skrivet i Java va?
Tänkte mest att där är uttryck jag aldrig sett innan ![]()
