January 15, 2004
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Min flickvän har fått en marig c++ uppgift som hon inte lyckats lösa helt och hållet, själv är jag inte så extremt säker på just c++, så jag är verkligen tacksam för all hjälp jag kan få här.
Uppgiften lyder:
Skapa ett program som läser in ett antal heltal (högst 100 stycken) och placerar dem i fält som delas upp i två delar (OBS! Detta sker i ett och samma fält), var sida i fältet skall vara sorterade i storleksordning med minsta talet först.
Om talet som läses in är mindre än 50 skall det placeras i ena fältet och om det är ett tal över 50 läses det in i det andra fältet. Talet 50 läggs in i fältet med de lägre talen. Programmet ska läsa in ett ta i taget och placerar detta i något av fälten.
Inför varje ny inläsning skall de hittills inlästa talen vara sorterade. Sorteringen skall göras med hjälp av bubbelsortering (se uppgifter 18, sida 80 i Skansholm). När användaren avslutar inläggning av tal skall fältets innehåll skrivas ut.
Krav:
Programmet ska
* ha en fungerande inläsning av talet samt en fungerande bubbelsortering
* ha en fungerande utskrift av listan med det minsta talet först för varje del
* sortera fältet i två delar - en med tal över 50 och en med tal under 50
* fälten ska kunna skrivas ut var för sig
Är som sagt väldigt tacksam för all ev. hjälp som kan erbjudas.
Mvh
Lindfors
January 15, 2004
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Bifogar koden hon skrivit. det skumma är att den funkade inte i skolan men hemma. Använder samma kompilator, hursomhelst så skulle jag vara tacksam för lite optimeringsförslag. Måste koden verkligen bli såhär pass lång?
#include "iostream.h"
void bubblesort(int *f, int &k);
void skriv_ut_lista(int *f, int k);
int main(int argc, char* argv[])
{
int f[2][100];
int i;
int x=0;
int y=0;
int tal;
int antal;
int val;
cout<<"Hur många tal vill du skriva in(max 100)?";
cin>> antal;
for(i=0;i<antal;i++)
{
cout<<"skriv ett tal";
cin>>tal;
if(tal<50)
{
f[0][x]=tal;
bubblesort(&f[0][0],x);
x++;
}
else
{
f[1][y]=tal;
bubblesort(&f[1][0],y);
y++;
}
}
cout<<"För att skriva ut listan med tal under 50 tryck 1n";
cout<<"För att skriva ut listan med tal över 50 tryck 2n";
cout<<"För att skriva ut båda listorna tryck 3n";
cin>>val;
if (val==1)
{
skriv_ut_lista(&f[0][0], x);
}
if (val==2)
{
skriv_ut_lista(&f[1][0], y);
}
if (val==3)
{
cout<<"Lista1:";
skriv_ut_lista(&f[0][0], x);
cout<<"Lista2:";
skriv_ut_lista(&f[1][0], y);
}
return 0;
}
void skriv_ut_lista(int *f, int k)
{
for(int i=0;i<k;i++)
{
cout<<*(f+i);
cout<<" ";
}
}
void bubblesort(int *f, int &k)
{
bool byt_plats = true;
while (byt_plats == true)
{
byt_plats=false;
for (int i=0; i<k; i++)
{
int a=*(f+i);
int b=*(f+i+1);
if(a>b)
{
int c = a;
a = b;
b = c;
*(f+i)=a;
*(f+i+1)=b;
byt_plats = true;
}
}
}
}
July 18, 2001
![sp_UserOfflineSmall](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_UserOfflineSmall.png)
Går nog inte att få det så mkt kortare, men jag ändrade lite så det ser lite bättre ut iaf..
#include "iostream.h"
void bubblesort(int *f, int &k);
void skriv_ut_lista(int *f, int k);
int main(int argc, char* argv[])
{
int f[2][100];
int i;
int x=0;
int y=0;
int tal;
int antal;
int val;
cout<<"Hur mx86nga tal vill du skriva in(max 100)? ";
cin>> antal;
for(i=0;i<antal;i++)
{
cout<<"skriv tal nr: " << i+1 << ": ";
cin>>tal;
if(tal<50)
{
f[0][x]=tal;
bubblesort(&f[0][0],x);
x++;
}
else
{
f[1][y]=tal;
bubblesort(&f[1][0],y);
y++;
}
}
cout<<"Fx94r att skriva ut listan med tal under 50 tryck 1n";
cout<<"Fx94r att skriva ut listan med tal x94ver 50 tryck 2n";
cout<<"Fx94r att skriva ut b" << "x86" << "da listorna tryck 3n"; //vet inte varför men å:et krånglar om det inte får stå ensammet 🙁
cin>>val;
if (val==1)
{
cout<<"Lista under 50: ";
skriv_ut_lista(&f[0][0], x);
cout<<"n";
}
if (val==2)
{
cout<<"nLista över 50: ";
skriv_ut_lista(&f[1][0], y);
cout<<"n";
}
if (val==3)
{
cout<<"Lista under 50: ";
skriv_ut_lista(&f[0][0], x);
cout<<"nLista över 50: ";
skriv_ut_lista(&f[1][0], y);
cout<<"n";
}
system("Pause");
return 0;
}
void skriv_ut_lista(int *f, int k)
{
for(int i=0;i<k;i++)
{
cout<<*(f+i);
cout<<" ";
}
}
void bubblesort(int *f, int &k)
{
bool byt_plats = true;
while (byt_plats == true)
{
byt_plats=false;
for (int i=0; i<k; i++)
{
int a=*(f+i);
int b=*(f+i+1);
if(a>b)
{
int c = a;
a = b;
b = c;
*(f+i)=a;
*(f+i+1)=b;
byt_plats = true;
}
}
}
}
1 Guest(s)
![sp_Information](https://nordichardware.se/wp-content/sp-resources/forum-themes/reboot/images/darkpack/sp_Information.png)