Användarprofil

Uppgifter
Användarnamn
Email
Besök -
Hemsida Ingen
Plats (stad)
Senaste besök 01:00 - 1:a Januari 1970
Poster i forumet
Varningar
Grupp
Medlem sedan 01:00 - 1:a Januari 1970
Artiklar och filer
Den här användaren har inga artiklar eller filer

Avatar


Presentation av

Den här användaren har inte skapat någon personlig presentation.

Senaste inläggen i forumet

Dynamisk vektor av strukturer

    Citat av Peter:


Tror inte att det är riktigt det som sync() gör så det fungerar inte.

Jo.
Citat av cplusplus.com:

int sync ( );

Synchronize input buffer with source of characters
Synchronizes the buffer associated with the stream to its controlled input sequence. This effectively means that the unread characters in the buffer are discarded.


    Citat av Ragnarök:


sista biten är 1 eller 0 som blir en check om det är ett negativt tal. två unsigned som bli compared kollas bara igenom att se vilken som är den högsta eller lägsta biten satt.

Datavärden jämförs för det mesta med CMP-instruktionen som subtraherar den ena operanden från den andra och sätter processorns resultatflaggor efter resultatet. Dessa flaggor jämförs på olika sätt om man vill jämföra ett positivt eller negativt tal. Däremot tar dessa beräkningar lika lång tid i dagens processorer.



Postad 14:37 - 15:e April 2012
Dynamisk vektor av strukturer

Felet är att när du anropar cin.getline
cin.getline(pi[i].name, Size);
så finns redan ett nyradstecken först i inmatningsbufferten, som kommer ifrån cin >> antal;.

Detta kan fixas genom att anropa cin.get() en gång innan du anropar cin.getline. Eller så kan du också anropa cin.sync().

cin.get() tar bort och returnerar ETT tecken ifrån inmatningsbufferten.
cin.sync() ignorerar alla olästa tecken i inmatningsbufferten, vilket gör den tom.



Postad 16:50 - 6:e Januari 2011
c++ hjälp? Summera alla värden i en foor loop?

Anledningen till att du får "antal undeclared" vid medelv/=antal; är för att antal inte existerar i räckvidden.

T.ex.

  1. int main()
  2. {
  3. int mainVar;
  4.  
  5. {
  6. int blockInMainVar;
  7. }
  8.  
  9. int mainVar2;
  10.  
  11. cout << mainVar << endl;
  12. cout << blockInMainVar << endl; // FEL
  13. cout << mainVar2 << endl;
  14. }

Som du ser så deklarerar(egentligen definierande deklaration) du variabeln blockInMainVar inom blockparenteserna { }. Detta betyder att variabeln bara har räckvidd inom dessa parenteser.

Du deklarerar variabeln antal här:
for(int antal=reps2+1;antal<reps1;antal++)
{
cout<<antal<<" ";
summa+=antal;
}

vilket gör att variabeln antal endast har räckvidd inom for-loopen. Det allokerade minnet i datorn för variabeln frias när programmet går ur räckvidden. Variabeln kan därför inte kommas åt.

Detta kan lösas genom att du deklarerar variabeln antal så högt upp i programmets räckvidd som den behövs, i detta fall i main-funktionen, som vi också gjorde med int summa.

  1. int antal;
  2. for(antal=reps1+1;antal<reps2;antal++)
  3. {
  4. cout<<antal<<" ";
  5. summa+=antal;
  6. }

Det är bra om du lär dig termerna, t.ex. deklaration, definition. För senare i ditt programmeringslärande(där jag är) kommer det att bli MYCKET FÖRVIRRANDE om du inte lärt dig termerna. Och ännu viktigare är att du lär dig den rätta betydelsen.

Själva hände det så för mig att jag struntade i att lära mig den terminologin(varför ska man lära sig den?). Men nu lär jag mig några mer komplicerade nyckelord i C++, som måste förklaras; och som tyvärr endast kan förklaras med terminologin.

Jag sökte jättemycket på internet men överallt sa alla olika betydelser av deklaration och definition. Men till slut så tittade jag i säkra källor(t.ex. ordböcker, programmeringsböcker) och kom fram till att:

  • Deklaration är: När man talar om för kompilatorn att "här finns en variabel av den här typen".
  • Definition är: Den här variabeln ska ligga på den här positionen i datorns minne.

Några andra som kan förväxlas med definition är:

  • Tilldelning är: När man tilldelar en variabel ett värde.
  • Initiering är: När man tilldelar en variabel ett värde vid definitionen.

Lite "överkurs" för att räta ut min användning av begreppen.

Definierande deklaration är t.ex.

  1. int variabelnamn;

Till skillnad ifrån en ren deklaration:

  1. extern int variabelnamn;

int variabelnamn "talar om för kompilatorn att här finns en variabel vid namnet variabelnamn av typen int", och allokerar minne i datorn för variabeln.

Men, extern int variabelnamn talar BARA om för kompilatorn att här finns en variabel vid namnet variabelnamn av typen int. Den allokerar INTE minne i datorn åt variabeln.

Men det var som sagt bara för att visa vad jag menade, inget du alls behöver lära dig på ett tag.



Postad 14:46 - 27:e Oktober 2010
c++ hjälp? Summera alla värden i en foor loop?

Eftersom att du har delat upp "Tal mellan"-proceduren i två underprocedurer på rad 12 & 19 så är det mycket, mycket praktiskt att summera talen medan du beräknar dem.

På detta sätt skulle jag utföra summeringen:

  1. int summa = 0;
  2. if(reps1<reps2)
  3. {
  4. cout<<"Tal mellan "<<reps1<<" och "<<reps2<<":";
  5. for(int antal=reps1+1;antal<reps2;antal++)
  6. {
  7. cout<<antal<<" ";
  8. summa += antal;
  9. }
  10. cout<<endl;
  11. }
  12. else
  13. {
  14. cout<<"Tal mellan "<<reps2<<" och "<<reps1<<":";
  15. for(int antal=reps2+1;antal<reps1;antal++)
  16. {
  17. cout<<antal<<" ";
  18. summa += antal;
  19. }
  20. cout<<endl;
  21. }
  22. cout<<"Summan="<<summa<<endl;

Jag rättade även ett slarvfel du gjort. Du delar upp proceduren beroende på om reps1 < reps2, men skriver att reps1 är minst om reps2 < reps1 på rad 22(din), 15(min).

Kom också ihåg att när du beräknar medelvärdet av talen, så se till att den räknar på double eller float, och inte int.



Postad 14:47 - 22:a Oktober 2010
5, 10, 20 25, 30

Förutsätter att detta är C++ i och med att du inte skrivit vad det är för språk du undrar över.

int addf(int n)
{
if(n + 5 == 15)
return n + 10;
return n + 5;
}

En väldigt enkel funktion.



Postad 12:13 - 8:e Oktober 2010

Skicka meddelande
Läs s blog