Arne Skrevet 3. april 2008 Del Skrevet 3. april 2008 Takk skal du ha, du er flink! Og viss eg skal samanlikne strengar då? Dette gir feilmelding: string str = "arne går på ski"; int z = 0; if (str[z] == 0) { cout << str[z]; } Lenke til kommentar
Mr.Garibaldi Skrevet 3. april 2008 Del Skrevet 3. april 2008 Bare hyggelig Du gjør det nesten riktig. Men du må bruke '0' eller "0" for å sammenligne med tegn. Evt. kan du bruke ascii-verdiene direkte som tall, men det er blir en liten omvei. Begge disse gjøre det samme string st = "arne trenger hjelp"; if(st[0] == 97){ std::cout << st[0] <<std::endl; } if(st[0] == 'a'){ std::cout << st[0] <<std::endl; } Lenke til kommentar
Arne Skrevet 9. april 2008 Del Skrevet 9. april 2008 Danke schön! Korleis skal eg kunne loope over antal linjer i ei tekstfil? Eg opner fila slik: ifstream MyFile("data.dat", ios::app); Eg vil då bruke linje for linje av innhaldet i ei loop heilt til vi har kome til eof. Vil while(!MyFile.eof()) funke? Forresten, kva kan denne erroren tyde på? Klikk for å se/fjerne innholdet nedenfor 1>main.obj : error LNK2019: unresolved external symbol "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl getInfo(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?getInfo@@YA?AV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z) referenced in function _main Lenke til kommentar
Giddion Skrevet 10. april 2008 Del Skrevet 10. april 2008 Det virker som om du mangler #include <string og #include <vector> i koden din Lenke til kommentar
Arne Skrevet 10. april 2008 Del Skrevet 10. april 2008 Nja, akkurat det har eg... Men det løyste seg, men eg veit ikkje heilt kva det var. Nokon her som kjenner godt til Visual c++ 08 express? Korleis kan eg prøve ut nye idear til kode og teste ut ting, utan å måtte opprette nytt prosjekt og solution og fæla greier? Lenke til kommentar
Mr.Garibaldi Skrevet 10. april 2008 Del Skrevet 10. april 2008 Lag et prosjekt, og bare bytt ut innholdet i hovedfilen? Evt. legg til og fjern filer med koden du vil bruke... Lenke til kommentar
Arne Skrevet 10. april 2008 Del Skrevet 10. april 2008 (endret) Går jo det, men lurte på om det kanskje fantest ein måte der eg berre opprettar .cpp-fila, kompilerer og kjører? Forresten så kom Klikk for å se/fjerne innholdet nedenfor main.obj : error LNK2019: unresolved external symbol "class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > __cdecl getInfo(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?getInfo@@YA?AV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@@Z) referenced in function _main tilbake... EDIT: No funkar det, det viste seg at eg kallte ein funksjon som eg ikkje hadde laga... :\ Endret 10. april 2008 av Arne Lenke til kommentar
Akidon Skrevet 17. april 2008 Del Skrevet 17. april 2008 Jeg har en funksjon som gir ut "string". Og en annen som trenger "char". Jeg må altså konvertere string til char. Noen som vet hvordan? Lenke til kommentar
Arne Skrevet 17. april 2008 Del Skrevet 17. april 2008 Kva med å lage eit char array, og så fyller du enkelt og greit opp arrayet slik: for (int iter = 0; iter != string.lenght(); iter++) { char[iter] = string[iter]; } Burde ikkje det funke? Lenke til kommentar
Jaffe Skrevet 17. april 2008 Del Skrevet 17. april 2008 (endret) String-klassen har en egen metode for dette, c_str(). Den returnerer en peker til en array med bokstavene i strengen. string s = "Hei og hå"; const char* lol = s.c_str(); cout << lol << endl; Endret 17. april 2008 av Jaffe Lenke til kommentar
Mr. K Skrevet 24. april 2008 Del Skrevet 24. april 2008 (endret) Heisann alle sammen! Jeg var veldig interessert i C++ før, helt til jeg fant ut at bøkene jeg leste var så kjedelige at jeg gav opp. Nå har jeg bestemt meg for å ta det opp igjen! Jeg var ikke noen ekspert før, ikke i det hele tatt, nærmest en nybegynner som eksperimenterte litt. Jeg vil derfor lage en kalkulator, som jeg enkelt kan lage nye funksjoner til. Jeg har holdt på i ca en halv time, og har kommet et lite stykke, men jeg har lyst til å dele opp de forskjellige funksjonene i flere headere, slik at det er litt lettere å finne dem, og endre på dem. Vil dette være lurt, dumt, eller finnes det en enda lurer måte? Poenget er at jeg ikke vet hvordan jeg gjør det, kan noen hjelpe meg? Takk for alle svar. #include <iostream> #include <cmath> using namespace std; int addisjon(int valg); int subtraksjon(int valg); int multiplikasjon(int valg); int divisjon(int valg); double kvadratrot(int valg); int main() { cout << "Velkommen til min kalkulator." << endl; cout << "Velg hvilken operasjon du vil utføre:" << endl; cout << " 1. Addisjon" << endl; cout << " 2. Subtraksjon" << endl; cout << " 3. Multiplikasjon" << endl; cout << " 4. Divisjon" << endl; cout << " 5. Finne kvadratroten av et tall" << endl; int valg; cin >> valg; addisjon(valg); subtraksjon(valg); multiplikasjon(valg); divisjon(valg); kvadratrot(valg); system("PAUSE"); return 0; } int addisjon(int valg) { int tall = 1; if (valg==tall) { cout << "Skriv inn de to tallene du vil addere: " << endl; int tall1, tall2; cin >> tall1 >> tall2; int sum = tall1 + tall2; cout << "Her er summen: " << sum << endl; } return 0; } int subtraksjon(int valg) { int tall = 2; if (valg==tall) { cout << "Skriv inn de to tallene du vil subtrahere: " << endl; int tall1, tall2; cin >> tall1 >> tall2; int sum = tall1 - tall2; cout << "Her er summen: " << sum << endl; } return 0; } int multiplikasjon(int valg) { int tall = 3; if (valg==tall) { cout << "Skriv inn de to tallene du vil multiplisere: " << endl; int tall1, tall2; cin >> tall1 >> tall2; int sum = tall1 * tall2; cout << "Her er summen: " << sum << endl; } return 0; } int divisjon(int valg) { int tall = 4; if (valg==tall) { cout << "Skriv inn de to tallene du vil dividere: " << endl; int tall1, tall2; cin >> tall1 >> tall2; int sum = tall1 / tall2; cout << "Her er summen: " << sum << endl; } return 0; } double kvadratrot(int valg) { int tall = 5; if (valg==tall) { cout << "Skriv inn tallet du vil regne ut kvadratroten av: " << endl; double tall; cin >> tall; double kvadratrot = sqrt(tall); cout << "Kvadratroten av tallet " << tall << " er " << kvadratrot << endl; } return 0; } EDIT: Jeg har ikke lagt til noen kommentarer i koden, det meste er ganske "straight forward". Endret 24. april 2008 av double-a Lenke til kommentar
Arne Skrevet 24. april 2008 Del Skrevet 24. april 2008 Akkurat det med header files kan eg ikkje svare deg på, men det er nok ikkje noko poeng i å gjere det når det er såpass lite kode. Men forresten, kvifor kallar du alle funksjonane i main()? Viss eg var deg, ville eg gjort det slik at du i main kjører ein switch, der du substraherer viss brukaren har tasta 2, til dømes... Og, så bør du returnere double i alle funksjonane, sidan matematiske resultat ikkje alltid er heiltal. Når eg lager slike funksjonar, plar eg å bruke returneringsverdien i staden for ein side-effekt. Du returnerar jo berre 0 i alle! Eg trur du heller skal lage funksjonar som tar t.d to argument, t.d double addisjon(double one, double two). Det eineste du gjer i den funksjonen vil då vere å rekne ut resultatet for så å returnere det. Men for så enkle operasjonar som det, finst det sikkert funksjonar frå før. Lenke til kommentar
Mr. K Skrevet 24. april 2008 Del Skrevet 24. april 2008 (endret) Jeg tenkte først på Switch, men husket ikke helt hvordan det fungerte, så jeg satte alt kjapt opp slik som det er nå. Men jeg tror jeg skal prøve å gjøre det om til Switch. Dette er bare en "prototype", jeg er klar over at matematiske resulater ikke alltid er heltall, men takk for tipset! Så jeg kan prøve ut det du nevnte! Takk for tipset igjen! Endret 28. april 2008 av double-a Lenke til kommentar
Akidon Skrevet 28. april 2008 Del Skrevet 28. april 2008 Jeg har ett tall på 8 bits som skal sendes over seriell port. Og det må dermed deles opp i LSB og MSB på 4 bit hver. Kunne noen gitt meg en pekepinn på hva jeg kan gjøre her? Lenke til kommentar
GeirGrusom Skrevet 28. april 2008 Del Skrevet 28. april 2008 (endret) char LSB = x & 0x0F; char MSB = x >> 4; Forutsetter at x også er en byte. edit: en metode til typedef struct _byte_sb { unsigned : 4 MSB; unsigned : 4 LSB; }byte_sb; Endret 28. april 2008 av GeirGrusom Lenke til kommentar
Akidon Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 (endret) Takker for svar geir. Kan man altså utføre bitvise operasjoner med char? Har hele tiden trodd jeg måtte konvertere char til int for å gjøre dette. Edit: I forsøket på å teste ut Dette lsb og msb greiene lagde jeg ett lite program i console. #include <iostream.h> #include <stdlib.h> #include <stdafx.h> using namespace std; char gofuckyourself[256]; char LSB [256]; char MSB [256]; int main() { cin >> gofuckyourself; int LSB = gofuckyourself & 0F; char MSB = gofuckyourself >> 4; cout << LSB << endl; cout << MSB << endl; return 0; } Og hver gang jeg finner ut av en feil finner jeg en ny. Akkurat nå er det namespace std som ikke vil fungere. error C2871: 'std' : a namespace with this name does not exist Kjører Visual Studio 2005 nå. Endret 9. mai 2008 av Akidon Lenke til kommentar
teflonpanne Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 (endret) I C++ har ikke standard-headerne .h bak seg, det er C-headere. Bruk <iostream> osv istedet. Hvis du vil bruke de gamle C-headerne heter de <cstdio> <cstdlib> osv Endret 9. mai 2008 av teflonpanne Lenke til kommentar
Akidon Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 Var ikke mye hjelp i det. Får fremdelse "error C2871: 'std' : a namespace with this name does not exist". #include <iostream> #include <stdlib> #include <stdafx.h> using namespace std; char gofuckyourself[256]; char LSB [256]; char MSB [256]; int main() { //cin >> gofuckyourself; int LSB = gofuckyourself & 0F; char MSB = gofuckyourself >> 4; cout << LSB << endl; cout << MSB << endl; return 0; } Lenke til kommentar
teflonpanne Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 Husker ikke helt åssen det er med MSVS, men det at du inkluderer <stdafx.h> betyr at du bruker precompiled headers tror jeg. Prøv å lag et nytt prosjekt og kryss av så du ikke får precompiled headers. Kan ikke se no annet som er feil. Lenke til kommentar
Akidon Skrevet 9. mai 2008 Del Skrevet 9. mai 2008 (endret) Fant ut hva som var problemet, kanskje. Måtte inkludere #include <string>. Men jeg har fremdeles problemer med cin. error C2065: 'cin' : undeclared identifier Trodde den skulle fungere når jeg hadde med namespace std. Virker forresten som om jeg må ha med precompiled header for å få med stdlib Edit: nå funker det ^^ Måtte ha iostream rett før namespace std. Tydelig at rekkefølgen har mye å si. Endret 9. mai 2008 av Akidon Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå