Gå til innhold

Bone's Offisielle C++ hjelpetråd


Anbefalte innlegg

....
double temp_snt(double)
{
double sum_temp = 0, snitt_temp = 0;
int counter = 1;

 while(counter <= dager)
 {
 	snitt_temp = sum_temp + temperaturer[counter];
 	counter++;

 }
 
 cout << endl << "Gjennomsnitlig temperatur er " << snitt_temp / dager;
 
return snitt_temp;
}
....

 

noen som vil forklare meg _hvorfor_ den ikke funker?

Lenke til kommentar
Videoannonse
Annonse

paste coden ;)

 

og et lite "question" til:

 

funker srand med double eller kun med int?

 

f.eks

 

....
#include <ctime>

main(){
...
double low, high, value;
srand(time(0));

value = low+rand()%high;


...
}


 

har oxo f?tt en feilmelding der

Endret av antoker
Lenke til kommentar

Jeg tror jeg går for C++, etter alt det jeg har lest om de forskjllige språkene.

 

Lastet ned conTEXT og MinGW og laget det programmet. Forresten så virket ikke den versjonen av conTEXT det var linket til, fikk ikke instalert det, så jeg fant en annen versjon.

 

Tenkte jeg skulle skaffe meg Accelerated C++, siden den blir omtalt som den beste "newb" boka.

 

Ellers takk for et raskt og bra svar.

Lenke til kommentar

har fortsatt problemer med rand ;)

jeg m? generere et tilfeldig tall mellom 2 grenser, tallet m? v?re en double...

 


//tilfeldig temperaturgenerering
double temp_gen(double)
{

double temp_low, temp_high;

 cout << endl << "Laveste temperaturverdi : ";
 cin >> temp_low;
 cout << endl << "Hoegste temperaturverdi : ";
 cin >> temp_high;
 cout << endl << "Generering av temperaturer...";
 	
 	for (int counter = 1; counter <= dager; counter++)
 	{
       	
 	temperaturer[counter] = temp_low+rand()%temp_high; 

 	}

 	cout << endl << "Generering fullfoert.";

return temperaturer[32];

}


 

feilmelding error C2297: '%' : illegal, right operand has type 'double'

 

som sagt, s? m? jeg ha en double....

Lenke til kommentar
antoker:

For andre gang, denne gjør akkurat det du er ute etter, og er lett å ta i bruk:

http://forum.sourcecode.no/index.php?showt...dpost&p=1256520

 

..men si fra hvis du sliter, så paster jeg et komplett virkende program her som tar i bruk koden i linken ovenfor.

jeg kunne ha brukt den, men jeg maa bruke de originale bibliotekene...

den funksjonen som jeg har skrevet, bruker int... men generer enten bare

positive tall eller negative... uff, begynner aa gi opp... :(

 

her er funksjonen, hvis det er noen som vil ha den ;)

 


double temp_gen(double)
{

double temp_low;
int	temp_high;

 cout << endl << "Laveste temperaturverdi : ";
 cin >> temp_low;
 cout << endl << "Hoegste temperaturverdi : ";
 cin >> temp_high;
 cout << endl << "Generering av temperaturer...";
 	
 	for (int counter = 1; counter <= dager; counter++)
 	{
       	
   temperaturer[counter] = temp_low+rand()%temp_high; 

 	}

 	cout << endl << "Generering fullfoert.";

return 0;

}

Endret av antoker
Lenke til kommentar
  • 2 uker senere...

bah, sliter igjen ;)

 


double readinn_file()
{
 int antall_elementer;
 char outstring[100];

cout << "Tast inn antall varer som skal legges in : ";
cin >> antall_elementer;

 for (int antall = 0; antall <= antall_elementer; antall++)
 {

 	ofstream offile;

 	offile.open(filename);
 	
 	cout << "Tast inn varen: ";
 	cin  >>  outstring;
 	
 	
 	offile.write(outstring, 100);
 	offile.close();


 }


return NULL;
}

 

Problemet her at stringen blir lagt i filen, men hvis jeg har data fra foer, saa blir den slettet :(

Lenke til kommentar
  • 2 uker senere...
Og hva er bool? Og hva gjør vector? Hva er mer praktisk med en vector?

Kan bare svare deg på det spørsmålet med bool (tror jeg da, er ganske sikker)

bool variabler kan bare ha to verdier: true or false(sant eller usant)

og hvis jeg ikke husker helt feil så vil dette sette bool variablen til false

//Sant_usant = 1; dette vil sette variablens verdi til true
//Sant_usant = 236; dette vil også regnes som true

bool Sant_usant;
Sant_usant = 0; // dette setter bool variablen til false

if (Sant_usant==true)
 {
 //denne delen vil ikke bli gjort
 }
else
 {
 //denne delen vil bli gjort 
 }

Dette er fordi:

0 regnes som false og 1 eller mere regnes som true.

Lenke til kommentar

Rask notis: Negative verdier regnes også som true (altså; alt som ikke er 0 er true).

 

 

For å legge til tekst til en fil, i steden for å overskrive filen, gjør du det slik:

 

std::ofstream offile;
// ...
offile.open(filename, std::ios::app);

 

 

Evt bare:

std::ofstream offile(filename, std::ios::app);

 

 

Anbefaler dessuten å bruke std::string. Dette gir noe sånt som dette:

 

#include <string>
#include <fstream>
#include <iostream>

int readin_file(const std::string& filename)
{
    int antall_elementer;
    std::string outstring;

    std::cout << "Tast inn antall varer som skal legges inn: ";
    std::cin >> antall_elementer; 

    for (int antall = 0; antall < antall_elementer; antall++)
    {
        std::ofstream offile(filename.c_str(), std::ios::app);
        if (offile.fail()) 
        {
            std::cerr << "Kunne ikke skrive til " << filename << ".\n";
            continue;
        }
        std::cout << "Tast inn varen: ";
        std::cin  >>  outstring; 

        offile << outstring << std::endl;
        offile.close();
    }

return 0;
}

 

 

En std::vector er et slags array, som tar seg av minne-behandling osv selv. Det betyr at du kan lage et array (eller da en std::vector) bestående av en hvilken som helst type (nesten), som øker og minker størrelse etter behov. Veldig praktisk.

Endret av Myubi
Lenke til kommentar
  • 2 uker senere...

Morn!

 

Er ganske ny med C/C++ men prøver å lære meg det..

Har jo selfølgelig starta med "Hello World" progget.

bruker winXp, og Dev-C++ compilatoren..

Men, overalt på internett finner man forskjellige måter for å lage "Hello World"

Dette er da den jeg bruker:

 

#include <iostream.h>

int main ()
{
 cout << "Hello World!";
 return 0;
}

Men får bare opp et vindu i ca 0,001 sec.... kjønner at det har noe med "return" saken å gjøre, men hvordan gjør man så programmet ikke avsluttes, før man har sett om man har fått det til??? :dontgetit:

 

takker... :thumbs:

Lenke til kommentar
Morn!

 

Er ganske ny med C/C++ men prøver å lære meg det..

Har jo selfølgelig starta med "Hello World" progget.

bruker winXp, og Dev-C++ compilatoren..

Men, overalt på internett finner man forskjellige måter for å lage "Hello World"

Dette er da den jeg bruker:

 

#include <iostream.h>

int main ()
{
 cout << "Hello World!";
 return 0;
}

Men får bare opp et vindu i ca 0,001 sec.... kjønner at det har noe med "return" saken å gjøre, men hvordan gjør man så programmet ikke avsluttes, før man har sett om man har fått det til??? :dontgetit:

 

takker... :thumbs:

Det har vel ikke noe med return det der, tror jeg( er jeg ganske sikker på)

Spørsmålet er blitt stilt 1000 ganger, så da burde det være lett å svare ;):p

 

hvis du putter inn cin.get() på slutten av programmet så man må trykke en tast for at det skal forsette liksom, så funker det.

OBS: Hvis du har sett system("pause") noe sted, så funker det også, men de "proffene" ;) her har kommet frem til at det ikke er så bra...

Et eller annet med porting eller noe sånt.(kan ikke for mye av det der jeg :green: )

Det blir liksom sånn da:

 

#include <iostream.h> // Nå skrives det slik: #include <iostream> uten .h.

int main ()
{
// Her burde det har vært en using namespace std; 
cout << "Hello World!";   // Ellers må du skrive std::cout << "Hello world!";  
 return 0; //Hvis du vil slippe denne skriver du void int main() isteden  
}

Lenke til kommentar

bruker C ikke C++...

 

koden min ser nå sånn ut:

#include <stdio.h>

main()
{
   printf("HELLO WORLD!\nand HELLO HACKMAN!");
}

 

men vinduet ser man bare veldig kort tid, kan akkuratt se hva det står..

jeg trenger koden får noe som "Press a key to end" greier...

er det ikke noen kode for det i C??? :cry:

 

takker :thumbs::thumbs:

Lenke til kommentar
bruker C ikke C++...

 

koden min ser nå sånn ut:

#include <stdio.h>

main()
{
   printf("HELLO WORLD!\nand HELLO HACKMAN!");
}

 

men  vinduet ser man bare veldig kort tid, kan akkuratt se hva det står..

jeg trenger koden får noe som "Press a key to end" greier...

er det ikke noen kode for det i C??? :cry:

 

takker :thumbs:  :thumbs:

Jo det er det.

Jeg tror du kan bruke getchar()

uten at det er noe spessielt du må include, det er vel bare <stdio.h> eller noe sånt, er ikke helt sikker på den biten, men vet at det er mulig å bruke getchar()

Endret av zirener
Lenke til kommentar

Takk det funka! :thumbs::dribble::w00t::thumbup::wow:

 

forresten driver nå å prøver å lære meg noe nytt.... å lagre tall i bokstaver( Int saken OSV)

 

men hvorfor funker ikke dette:?

#include <stdio.h>
main()
{
printf("TAST IN ET TALL SOM SKAL LAGRES I A\n\n");
scanf("%d",&a);
printf("A ER %d",a);
}

 

takker

Lenke til kommentar

Hack-Man:

#include <stdio.h>

int main()
{
printf("TAST INN ET TALL SOM SKAL LAGRES I A: ");
scanf("%d",&a);
printf("A ER %d\n", a);
return(0);
}

 

under kompilering gir GCC-kompileren meg denne meldingen:

 

error: `a' undeclared (first use this function)

 

Rett oversatt, betyr det noe slikt: "hva ****** er 'a' for noe?"

 

Så vi forteller kompileren hva a er, altså vi deklarerer a:

 

#include <stdio.h>

int main()
{
int a;
printf("TAST INN ET TALL SOM SKAL LAGRES I A: ");
scanf("%d",&a);
printf("A ER %d\n", a);
return(0);
}

Endret av søppel
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...