Snabb hjälp med C++ uppgift.|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Snabb hjälp med C++ uppgift.
Lindfors
Siktar mot toppen
Medlem
Forum Posts: 92
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
1
October 18, 2004 - 4:58 pm
sp_Permalink sp_Print

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

Pim_
Member
Medlem
Forum Posts: 3947
Member Since:
March 20, 2003
sp_UserOfflineSmall Offline
750039
October 18, 2004 - 5:08 pm
sp_Permalink sp_Print

Vilken del har hon problem med?

*Bubbelsort bör hon gått igenom ioma den skall implementeras.
*Löses med en enkel loop.
*Löses med if-else-sats.
*Löses med enkelt villkor i loopen ovan.

Posta det hon gjort istället.

Lindfors
Siktar mot toppen
Medlem
Forum Posts: 92
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
750098
October 18, 2004 - 5:47 pm
sp_Permalink sp_Print

Bubbelsort är inte genomgånget då uppgiften ligger snäppet högre än genomgångarna och dessutom är programmeringsläraren fruktansvärt opedagogisk.

Koden har jag inte tillgång till just nu här hemma.

Pim_
Member
Medlem
Forum Posts: 3947
Member Since:
March 20, 2003
sp_UserOfflineSmall Offline
750130
October 18, 2004 - 6:10 pm
sp_Permalink sp_Print
Lindfors
Siktar mot toppen
Medlem
Forum Posts: 92
Member Since:
January 15, 2004
sp_UserOfflineSmall Offline
751008
October 19, 2004 - 4:02 pm
sp_Permalink sp_Print

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;
}
}
}

}

whoracle
Kommer du hit ofta?
Medlem
Forum Posts: 1942
Member Since:
July 18, 2001
sp_UserOfflineSmall Offline
754840
October 23, 2004 - 1:56 pm
sp_Permalink sp_Print

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;
}
}
}

}
Forum Timezone: Europe/Stockholm
Most Users Ever Online: 694
Currently Online:
Guest(s) 26
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL