Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

Skrevet

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];
}

Videoannonse
Annonse
Skrevet

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

Skrevet

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

Skrevet

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?

Skrevet (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 av Arne
Skrevet

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?

Skrevet (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 av Jaffe
Skrevet (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 av double-a
Skrevet

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.

Skrevet (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 av double-a
Skrevet

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?

Skrevet (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 av GeirGrusom
  • 2 uker senere...
Skrevet (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 av Akidon
Skrevet (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 av teflonpanne
Skrevet

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

Skrevet

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.

Skrevet (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 av Akidon

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...