Avatar billede diyar Nybegynder
30. juni 2008 - 13:16 Der er 6 kommentarer og
1 løsning

Hvordan scanner jeg arrayet for de mindste værdig?

Hej
Jeg er igang med at lave en lille opgave i C++, og jeg er ny på området. Jeg har et array, som jeg scanner for den støreste værdi, nu mangler jeg at scnner den for den mindste værdig (SmallestArea), men jeg kan ikke, derfor beder jeg om jers hjælp :).

Her er koden:
#include <iostream>
#include <stdio.h>

using namespace std;

int main(){

    int NumberOfRooms;
    double length;
    double width;
    double TotalArea = 0;
    double LargestArea = 0;
    double SmallestArea = 0;
    int index;

    cout << "Enter the number of rooms: ";
    cin >> NumberOfRooms;

    double *areas = new double [NumberOfRooms];
    for (int i =0; i < NumberOfRooms; i++){
        cout << "Enter the length of room nmber "<< i+1 << " : ";
        cin >> length;

        cout << "Enter the width of room nmber "<< i+1 << " : ";
        cin >> width;

        areas [i] = width * length;
        TotalArea += areas[i];
        cout << "Area of room number " << i << " is " << areas[i] << endl;
    }
    cout << "Total area : " << TotalArea << " square metre" << endl;
    //Scanner arrayet for den støreste area
    for (int i = 0; i < NumberOfRooms; i++){
        if (areas[i] > LargestArea){
            LargestArea = areas[i];
            index = i+1;
            cout <<"LargestArea: " << LargestArea << endl;
            cout <<"index: " << index << endl;

        }
    }
    cout<<"Room number "<<index<<",with an area wich is "<<LargestArea<<" square metre. is the largest room"<< endl;

    delete []areas;
    system("pause >> NULL");
    //terminaite the program:
    return 0;
}
Avatar billede drean Nybegynder
30. juni 2008 - 14:31 #1
Du kan jo løbe dem igennem i samme loop, det problem jeg ser er at du sætter SmallestArea til 0 i toppen: (Her antager jeg at alle de andre tal er over 0)

double SmallestArea = 0;

Nu er det lang tid siden jeg har rodet med C++, men mon ikke du kan hitte ud af sætte den til null, også første gang i løber igennem dit array sætte den til det tal og herefter tjekke om det er mindre end det der er gemt i variablen.

Noget i stil med:

        double SmallestArea = null;

        if (!SmallestArea)
        {
        //SmallestArea er ikke sat, derfor sætter vi den til areas[i]
          SmallestArea= areas[i];
        }
        if (areas[i] < SmallestArea){
            LargestArea = areas[i];
            index = i+1;
            cout <<"SmallestArea: " << SmallestArea<< endl;
            cout <<"index: " << index << endl;
        }
Avatar billede drean Nybegynder
30. juni 2008 - 14:32 #2
Ovenstående skal ses som eksempel kode, du skal lige skrive den med de rigtige variabler osv, kan se jeg har misset et par stykker :)
Avatar billede arne_v Ekspert
30. juni 2008 - 15:16 #3
LargestArea = areas[0];
SmallestArea = areas[0];
for (int i = 1; i < NumberOfRooms; i++){
        if (areas[i] > LargestArea) LargestArea = areas[i];
        if (areas[i] < SmallestArea) SmallestArea = areas[i];
Avatar billede diyar Nybegynder
30. juni 2008 - 15:55 #4
til arne_v: det virker fint, men jeg har et problem, og det er at jeg vil også vise hvilket Room Number er mindst.
altså printe room number til den mindte room.

cout<<"Room number "<<??????<<",with an area wich is "<<SmallestArea<<" square metre. is the largest room"<< endl;
Avatar billede arne_v Ekspert
30. juni 2008 - 16:15 #5
LargestArea = areas[0];
LargestRoom = 1;
SmallestArea = areas[0];
SmallestRoom = 1;
for (int i = 1; i < NumberOfRooms; i++){
        if (areas[i] > LargestArea)
        {
              LargestArea = areas[i];
              LargestRoom = i + 1;
        }
        if (areas[i] < SmallestArea)
        {
              SmallestArea = areas[i];
              SmallestRoom = i + 1;
        }
Avatar billede diyar Nybegynder
01. juli 2008 - 09:05 #6
Tak til jer begge to, arne_v, læg et svar. 1000 tak for hjælpen.
Avatar billede arne_v Ekspert
01. juli 2008 - 15:01 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester