Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

Videoannonse
Annonse

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

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

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

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
Lenke til kommentar

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
Lenke til kommentar

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
Lenke til kommentar

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

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
Lenke til kommentar
  • 2 uker senere...

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
Lenke til kommentar

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

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
Lenke til kommentar

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