Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [turbo pascal] eliminare un elemento di un array

    salve ragazzi, sono un neofita del linguaggio pascal e quindi mi rivolgo a voi per giungere ad una soluzione.
    dunque...vorrei sapere se esiste una funzione in pascal che elimini un elemento di un array composto da n elementi al verificarsi di una condizione.
    es:

    codice:
    if(n[i] < 0)then
    cancella elemento n[i]
    è possibile fare una cosa del genere?

  2. #2
    Gli array sono per loro stessa natura degli elementi statici , occupando una ben definita porzione di memoria . Per cui non puoi eliminare un elemento dell'array ; al massimo ne puoi resettare il valore come:
    codice:
    if(n[i] < 0) then
     n[i]:=0
    Per una gestione efficiente dello spazio di memoria devi rivolgere la tua attenzione alle strutture dinamiche , come le liste .

  3. #3
    avevo pensato di poter associare alla variabile n[i],dopo verificata la condizione,un valore vuoto. esempio:
    [CODE]if(n[i] < 0)then
    n[i]="";[CODE]
    ma mi da errore...come posso ovviare?
    ragazzi datemi una mano...grazie.

  4. #4
    scusa abbiamo postato contemporaneamente..!quindi non posso ovviare in nessun modo?
    se uso una struttura dinamica? posso eliminare gli elementi?spiegati meglio...grazie per l'attenzione

  5. #5
    Il tuo codice presenta 2 errori , da quello che ho capito:
    1)

    if(n[i] < 0) Si suppone che l'array contenga valori numerici per cui non puoi assegnargli il valore di stringa vuota "".

    2)
    l'istruzione = non è un'istruzione di assegamento ma di relazione di uguaglianza . L'assegnamento è indicato con il simbolo ':='

    Le operazioni di cancellazione di un elemento di un array non sono permesse .Un array di 10 elementi ad es. , occupera' sempre la stessa quantità di memoria , mentre una lista crescera' o diminuirà la sua grandezza a seconda delle operazioni effettuate su di essa .

  6. #6
    Grazie per le dritte..
    la domanda sorge spontanea...è possibile definire un tipo di variabile alfanumerica?in modo tale da poter assegnare alla variabile n[i] un valore vuoto :
    n[i]:=""
    se esiste, come si chiama questo tipo di variabile alfanumerica?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Per ovviare al problema devi poter disporre di una variabile che ti indica il numero di elementi presenti nell'array (ad esempio, itemCount).
    Per eliminare un elemento esegui le seguenti operazioni:

    1) Shift di tutti gli elementi successivi all'elemento da eliminare
    2) Diminuzione del valore della variabile itemCount di 1.

    Devi considerare, però, che ogni volta che vai a leggere l'array, lo devi considerare solamente per la lunghezza espressa da itemCount

    Esempio di eliminazione:
    codice:
    procedure Elimina(posizione: integer)
    var i: integer;
    begin
       for i:=posizione to itemCount-1 do
       begin
          tuoArray[i] := tuoArray[i+1];
       end;
       itemCount := itemCount - 1;
    end;
    N.B.: L'elemento non viene fisicamente eliminato (non viene, quindi, rilasciata la memoria corrispondente): ma l'effetto logico è lo stesso.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    innanzitutto grazie per avermi chiarito alcune cose...
    però c'è un'altra cosa..gli elementi da eliminare possono essere più di uno...

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da froz
    innanzitutto grazie per avermi chiarito alcune cose...
    però c'è un'altra cosa..gli elementi da eliminare possono essere più di uno...
    E dov'è il problema? La procedura può essere richiamata più volte...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.