Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.
Banaz

Banaz

Medlem
  • Plats Sundsvall
  • Registrerad 2006-09-11
  • Senast aktiv 2008-09-14
  • Antal inlägg 79

Foruminlägg

De senaste inläggen Banaz har skrivit i forumet.

  • Medlem
  • Sundsvall
  • 2006-12-14 10:32

Gjorde utskriften så här istället,

int ColCount=0; 

 for(int n=2; n<229; n++) 
 { 
    if(prim_tab[n]!=0) 
    { 
      cout<<setw(10)<<prim_tab[n]; 
      ColCount++; 

        if(ColCount>=5) 
        { 
           ColCount=0; 
          cout<<endl; 
        } 
   } 
} 

Tack alla ni som har hjälpt mig!

  • Medlem
  • Sundsvall
  • 2006-12-12 07:42

Tack memark, men jag har testat det tidigare också, det blir fel, det enda som rättas till är att nollorna inte skrivs ut, men då får jag bara en anda kolumn.
Primtalen som skrivsut är bara från 2 till 47 vilket är fel, de som ska skrivas ut är de 50 första, alltså upp till 229.

  • Medlem
  • Sundsvall
  • 2006-12-11 22:17

Precis, gjorde så och jag förstår det nu. Men jag vill nu göra om den algoritmen du tipsade om till kod så har jag något eget liksom och inte det förfarraten har skrivit.

  • Medlem
  • Sundsvall
  • 2006-12-11 20:28

oj så tråkig koden ser ut, har jag förstått ditt tips fel, skulle inte [co de][/co de] stå där de gör nu?

  • Medlem
  • Sundsvall
  • 2006-12-11 20:26

Ok det har jag okcså tänkt på, försökte med ett par vilkor men det blir inte rätt, antingen är vilkoren jag skapar är fel eller så skriver jag dem på fel ställe, som

[co de]
for(int i=0; i<=9; i++)
{
for(int j=0; j<=4;j++)
if(prim_tab !=0)

cout<<setw(10)<<prim_tab[i*5+j];
cout<<endl;
}

[/co de]

  • Medlem
  • Sundsvall
  • 2006-12-11 19:24

En lite bättre version, men problemet nu är att programmet skriver ut nollorna som jag ersatte de icke primtalen med...

int main()
{
const int ANTAL_PRIM = 229;
int prim_tab[ANTAL_PRIM+1];




for(int i=2; i<=ANTAL_PRIM; i++)
{
prim_tab[i]=i;
}

for(int i=2; i<=ANTAL_PRIM; i++)
{

for(int j=2; j<=ANTAL_PRIM; j++)


if(i!=j && j%i == 0)
prim_tab[j]=0;


}

//Utskrift av primtalen

for(int i=0; i<=9; i++)
{
for(int j=0; j<=4;j++)
cout<<setw(10)<<prim_tab[i*5+j];
cout<<endl;
}


return 0;
}

  • Medlem
  • Sundsvall
  • 2006-12-11 10:56

int main()
{
const int ANTAL_PRIM = 229;
int prim_tab[ANTAL_PRIM];
int index=0;

Försöker så här, men blir inte rätt heller...kan någon hjälpa mig på traven?

for(int i=2; i<=ANTAL_PRIM; i++)
{
prim_tab[i]=i;
}

for(int i=0; i<=ANTAL_PRIM; i++){

for(int j=0; j<=ANTAL_PRIM; j++)

if(i%j == 0)
prim_tab[index]=0;

else
prim_tab[index++]=i ;

  • Medlem
  • Sundsvall
  • 2006-12-11 10:43

hmm tycker det är enklare att förstår algoritmen du tipsade om, Tage, men jag kan fortfarande inte översätta det till kod...
måste nog ha två for loopar till för att gå genom arrayen och en för att dela varje element i arrayen med..varför ska det vara så krångligt när det är så lätt?:(

  • Medlem
  • Sundsvall
  • 2006-12-10 19:55

Ja, det är en skoluppgift. Har kollat på lösningsförslaget som finns i bokens webbplats till denna uppgift men är fortfarane osäker på om jag förstår hur han tar fram dessa tal..

int main()
{
const int ANTAL_PRIM = 50;
int prim_tab[ANTAL_PRIM];
bool primtal;
int antal=0, tal=1;

while (antal < ANTAL_PRIM)
{
tal++;
primtal=true;

for (int i=0; i< antal && primtal; i++) //
if (tal%prim_tab[i] == 0)
primtal=false;
if (primtal)
prim_tab[antal++] = tal;
}

for(int i=0; i<=9; i++)
{
for(int j=0; j<=4;j++)
cout<<setw(10)<<prim_tab[i*5+j];
cout<<endl;
}
return 0;
}

  • Medlem
  • Sundsvall
  • 2006-12-06 22:20

oki nu har jag läst i susning och wikipedia, algoritmen är lätt allt skriva för hand ja, men jag ahr ingen aning om hur det blir i kod.
Sedan om jag ska skriva alla de första 50 primtalen i en array, då kan jag väl bara skriva ut de, varför ska jag räkna fram de igen när jag har de i en array?

  • Medlem
  • Sundsvall
  • 2006-12-06 13:50
Ursprungligen av memark:

Tycker din metod låter jättebra. Se först till att du har en array med alla dina primtal (och inga andra tal ). Att skriva ut dem snyggt får sedan bli steg två.

Jaså?
Men jag kan väl inte skriva primtalen själv i en array? Är inte tanken att räkna fram de?

  • Medlem
  • Sundsvall
  • 2006-12-06 12:38

Som sagt så har jag ställt till det, det jag vill egentligen är att programmet ska ta fram de första 50 primtalen. Metoden jag använder betraktar alla tal som prima ja.
Jag kan inte någon metod att räkna ut primtalen, man kanske kan kontrollera att talet inte går att dela med ett mindre tal för att bestämma om det är primt eller inte, men jag vet inte hur jag ska skriva algoritmen.
När detta är klart så ska dessa tal skrivas ut i 5 kolumner.

  • Medlem
  • Sundsvall
  • 2006-12-04 11:04

Hmm nu har jag ställt till det ordentligt, får bara en massa bokstäver och siffror i utskrift och inte ser alls ut som kolumner

int main (){

int i,j, utdata[5][5], primtal=50;


cout<<"Primtalen är: ";

for(i=0; i<=primtal; i++)
{
if(i%i==0 && i%1==0)
utdata[i,i];

cout.width(3);
cout<<utdata;

}



return 0;
}

  • Medlem
  • Sundsvall
  • 2006-12-04 09:26

Hej igen!
Känns som om det är något fel med den koden, har inte kört det än för programmet inte är klart, kan du se vad det är som måste rättas till?
Jag kommer nämligen att räkna fram 50st tal och skriva ut dem i 5 kolumner, och då skrev jag så här:
for(i=0; i<5; i++)
{
for(j=0; j<10; j++)
{
utdata=[i,j];
cout<<utdata<<endl;
}
}

  • Medlem
  • Sundsvall
  • 2006-12-01 15:04

Perfekt! Tack ulfis.