|
| Erstatning for array og info ang. bin/hex Fra : felixnielsen@hotmail~ |
Dato : 21-01-06 16:44 |
|
Jeg har et lille problem som jeg tænker at der måske er nogle kloge
hoveder herinde der kan løse.
Problemmet består i at jeg skal til at skrive et lille program der der
kan ricikere at skulle have med ekstremt store heltal at gøre og i
sidste ende "uendelig" mange af dem, derfor kan jeg naturligvis ikke
bruge arrays til at holde styr på dem, dels fordi at man jo skal
angive et antal pladser i arrayed når det initialiseret, men også
fordi at det af åbenlyse årsager vil være spild af hukkommel da elle
pladserne jo, så vidt jeg ved, bliver initialiseret som værende samme
type variabel, fx int, selv om mange af værdierne vil være så små
at de med fordel kunne blive gemt i en variabel af en type der ikke
kræver såmeget plads.
Jeg tænker at man måske kunne bruge en form for database, det er ikke
noget jeg har rodet særlig meget med, men det er mit intryk at det
ville være en dårlig løsning.
Derudover har jeg læst lidt om construct og classes, men slet ikke nok
til at kunne vurdere om det er noget der kan bruges (og så virker det
også noget forvirende
Jeg kunne tænke mig at høre nogle forslag om hvilken metode der ville
være mest passende at bruge, også gerne andre metoder end dem jeg har
foreslået.
Der ud over overvejer jeg også kraftigt at lave udregningerne i binær
eller hex da det kan vise sig at være mere fordelagtigt, men er der
nogen funktioner inkludere som man evt. kan bruge til det?
Sidst men ikke mindst. Jeg er håbløs nybegynder, så hvis det er
være mulig at skrive evt. svar på et sprog der ikke indeholder alt
formange mærkelige ord og geek expressions ville det være en stor
hjælp
På forhånd tak.
| |
felixnielsen@hotmail~ (21-01-2006)
| Kommentar Fra : felixnielsen@hotmail~ |
Dato : 21-01-06 17:33 |
|
Jeg har ige skrevet et lille stykke kode, det på ingen måde korrekt,
men jeg håber at det illustrer mit problem og så kan det o også
være at der er nogen der kan regne ud hvad menningen med galskaben er
int X = ?;
int temparray[?];
int i = 0;
int ii = 0;
int primearray[?] = {2,3,5,7,11,13,17,19...};
bool isprime = false;
while (X != -1) {
if (X % P[i]) {
X = X / Primearray[i];
temparray[ii] = P[i];
ii++;
}
elseif (X == 1) {
if (ii == 1) {
isprime = true;
}
i = -1;
}
else {
i++;
}
}
if (isprime == true) {
cout << temparray[0] << "is prime";
}
else {
cout << temparray[0] << "*" << temparray[1] << "*" <<temparray[2]
(ect.)
}
lidt rodet og med masser af fejl og kan helt sikkert skrives
smartere...
| |
felixnielsen@hotmail~ (21-01-2006)
| Kommentar Fra : felixnielsen@hotmail~ |
Dato : 21-01-06 17:44 |
|
lige et par hurtige rettelse og tilføjelser.
int X = ?;
int temparray[?];
int i = 0;
int ii = 0;
int primearray[?] = {2,3,5,7,11,13,17,19...};
bool isprime = false;
while (X != -1) {
if (X % P[i] == 0) {
X = X / Primearray[i];
temparray[ii] = P[i];
ii++;
}
elseif (X == 1) {
if (ii == 1) {
isprime = true;
}
i = -1;
}
else {
i++;
}
}
if (isprime == true) {
cout << temparray[0] << "is prime";
}
else {
for (i = 0; i < ii; i++) {
if (i != ii-1) {
cout << temparray[i] << " * ";
}
else {
cout << temparray [i] << endl;
}
}
}
| |
Bertel Lund Hansen (21-01-2006)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 21-01-06 19:01 |
|
felixnielsen@hotmail.com skrev:
> Problemmet består i at jeg skal til at skrive et lille program der der
> kan ricikere at skulle have med ekstremt store heltal at gøre og i
> sidste ende "uendelig" mange af dem, derfor kan jeg naturligvis ikke
> bruge arrays til at holde styr på dem
Du kan lave et array med dynamisk tildeling:
if (antal poster == maksimum)
opret nyt array med 100 ekstra poster;
kopier det gamle array til det nye;
nedlæg det gamle array;
> Der ud over overvejer jeg også kraftigt at lave udregningerne i binær
> eller hex da det kan vise sig at være mere fordelagtigt, men er der
> nogen funktioner inkludere som man evt. kan bruge til det?
Udgregninger laves automatisk, og du kan ikke tvinge nogen
bestemt metode ned over C medmindre du skriver det hele helt fra
bunden, og det vil være vanvid.
Du kan derimod bestemme hvilken form resultaterne skal
præsenteres på for mennesker, og det er ikke svært. Du kan endda
vise flere slags på én gang.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
felixnielsen@hotmail~ (22-01-2006)
| Kommentar Fra : felixnielsen@hotmail~ |
Dato : 22-01-06 00:09 |
|
Ja, det var da et løsning forslag, det løser dog ikke problemmet med
den enorme hukkommelses tildelling, men det er måske slet ikke så
slem endda.
hvad angår bin/hex, så er jeg lidt ligeglad hvordan computeren laver
beregningerne, det jeg mente var at jeg fx. godt kunne tænke mig at
skrive FF*FF istedet for 255*255 i nogle tilfælde, det må da kunne
lade sig gøre.
ellers tak for svaret
| |
Kent Friis (22-01-2006)
| Kommentar Fra : Kent Friis |
Dato : 22-01-06 00:19 |
|
Den 21 Jan 2006 15:09:23 -0800 skrev felixnielsen@hotmail.com:
> Ja, det var da et løsning forslag, det løser dog ikke problemmet med
> den enorme hukkommelses tildelling, men det er måske slet ikke så
> slem endda.
>
> hvad angår bin/hex, så er jeg lidt ligeglad hvordan computeren laver
> beregningerne, det jeg mente var at jeg fx. godt kunne tænke mig at
> skrive FF*FF istedet for 255*255 i nogle tilfælde, det må da kunne
> lade sig gøre.
I C skriver man 0xff (0x betyder at det er hex).
Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.
| |
Bertel Lund Hansen (22-01-2006)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 22-01-06 00:39 |
|
felixnielsen@hotmail.com skrev:
> Ja, det var da et løsning forslag, det løser dog ikke problemmet med
> den enorme hukkommelses tildelling, men det er måske slet ikke så
> slem endda.
På mit system fylder en double 8 byte.
printf("%d",sizeof(double));
En pointer fylder 4 byte, og dertil kommer dem den peger på.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
felixnielsen@hotmail~ (22-01-2006)
| Kommentar Fra : felixnielsen@hotmail~ |
Dato : 22-01-06 14:37 |
|
Tak for svarende endnu engang.
ang. hex, så virker det jo meget simpelt, men er det muligt at jeg
lige kan få et hint til hvordan man udskriver i hex?
Og den sidste post men pointers forstår jeg beklageligvis ikke helt
menningen med, er det menningen at det skal være et godt råd eller
sådan?
| |
Kent Friis (22-01-2006)
| Kommentar Fra : Kent Friis |
Dato : 22-01-06 15:05 |
|
Den 22 Jan 2006 05:37:22 -0800 skrev felixnielsen@hotmail.com:
> Tak for svarende endnu engang.
> ang. hex, så virker det jo meget simpelt, men er det muligt at jeg
> lige kan få et hint til hvordan man udskriver i hex?
printf med %x plejer at kunne gøre det.
Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.
| |
Bertel Lund Hansen (22-01-2006)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 22-01-06 16:33 |
|
felixnielsen@hotmail.com skrev:
> Og den sidste post men pointers forstår jeg beklageligvis ikke helt
> menningen med, er det menningen at det skal være et godt råd eller
> sådan?
Hvis du ikke forstår det, skal du bruge et array og ikke
spekulere mere over det. Forklaringen bliver ret omfattende, men
kort fortalt kan man bruge pointere hvis man gerne vil undgå at
forudbestille et meget stort array fordi det ikke er sikkert at
det er nødvendigt, mens et lille array måske er for lille. Med
pointere kan man oprette plads efterhånden som der bliver brug
for den.
Med den fidus jeg gav dig i mit første svar, kan du dog også
tilpasse et array løbende.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
felixnielsen@hotmail~ (22-01-2006)
| Kommentar Fra : felixnielsen@hotmail~ |
Dato : 22-01-06 16:02 |
|
sry, jeg er som sag nybegynder, mener du printf%x? eller evt. printf
($etellerandet, %x); eller hvordan?
| |
Kent Friis (22-01-2006)
| Kommentar Fra : Kent Friis |
Dato : 22-01-06 16:20 |
|
Den 22 Jan 2006 07:01:39 -0800 skrev felixnielsen@hotmail.com:
> sry, jeg er som sag nybegynder, mener du printf%x? eller evt. printf
> ($etellerandet, %x); eller hvordan?
Har du overvejet en C begynderbog? Evt må der findes en online.
Mvh
Kent
--
Hard work may pay off in the long run, but laziness pays off right now.
| |
Bertel Lund Hansen (22-01-2006)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 22-01-06 16:35 |
|
felixnielsen@hotmail.com skrev:
> sry, jeg er som sag nybegynder, mener du printf%x? eller evt. printf
> ($etellerandet, %x); eller hvordan?
tal=217;
printf("%x",tal);
Sådan udskrives tallet i hexformat.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
felixnielsen@hotmail~ (22-01-2006)
| Kommentar Fra : felixnielsen@hotmail~ |
Dato : 22-01-06 16:43 |
|
Nå så fik jeg det på plads og endnu engang tak for alle svarende.
og ja, jeg har seriøst overvejet at købe en begynderbog, men det
kræver penge som jeg ikke har, hvad angår toturials på nettet så
har jeg læst en hel del om emnet, men som vi alle ved er mange af dem
af rigtigt dårlig kvalitet.
| |
|
|