Visualizzazione dei risultati da 1 a 7 su 7

Discussione: aiuto programma c++

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32

    aiuto programma c++

    salve ragazzi avrei un problema ocn un programma in c++ ora vi posto la traccia e dopo vi dico il mio problema.

    "Sia dato un array 2D A di tipo integer di grandezza 4xM, tale array contiene 2XM numeri <0 e 2Xm numeri >0. Progettare un algoritmo che restituisca un Array B 4xM in cui nelle prime due righe ci sono gli elementi >0 e nelle seconde gli elementi <0 nell'oridne in cui appaiono nell'array A."

    Il mio dubbio era come fare se incontro un elemento <0 a metterlo nelle seconde righe!?
    Grazie in anticipo!

  2. #2
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    è una specie di matrice trasposta "de noartri".
    Hai 4 righe:
    riga0 elementi positivi
    riga1 elementi positivi
    riga2 elementi negativi
    riga3 elementi negativi

    cosa non riesci a fare?

    in sostanza direi che è un esercizio per l'utilizzo degli indici e dei cicli innestati.
    Così "a naso" è un esercizio di C e non di C++, ad ogni modo inizia a buttar giù qualcosa e poi ci si ragiona...
    Ultima modifica di MySQL; 26-05-2015 a 10:35

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32
    io avevo pensato ad una cosa del genere ma ho notato alcuni errori e di conseguenza non funziona ti lascio il codice


    for (int i=0; i<n; i++){
    for (int j=0; j<n; j++){
    if(a[i][j]>0){
    b[i][j]=a[i][j];
    }
    else if (a[i][j]<0){
    b[i+1][j]=a[i][j];
    }
    }
    }

    che poi non ho capito perchè ma non vede i numeri negativi ma al loro posto mette 0
    Ultima modifica di crasty7; 26-05-2015 a 11:14

  4. #4
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,

    per prima cosa uno dei due cicli for deve andare fino a 4 e non fino a n. Poi quando copi gli elementi nella seconda matrice, non è detto che gli indici rimangano gli stessi, quindi dovresti tenere una nuova coppia di indici che utilizzi per scrivere nella seconda matrice.

  5. #5
    Utente di HTML.it L'avatar di MySQL
    Registrato dal
    May 2015
    Messaggi
    729
    più che n poi direi m, se m è il numero delle colonne.
    quindi avrai un ciclo nidificato
    i (righe) da 0 a <4
    j (colonne) da 0 a <m

    per quanto riguarda la memorizzazione hai varie possibilità, quella più semplice è avere due indici:
    rigacorrentepositivo (che può essere 0 o 1), parte da 0
    quantielementipositivi, parte da 0 fino a m-1

    rigacorrentenegativo (che può essere 2 o 3), parte da 2
    quantielementinegativi, parte da 0 fino a m-1
    in pseudocodice farai qualcosa del tipo (NOTA: nessuno dice di valori 0...)
    codice:
     se l'elemento i,j è positivo allora
          se quantielementipositivi <m-1 allora // c'è posto nella riga corrente
               metti in risultato[rigacorrentepositivo][++quantielementipositivi]
         altrimenti // abbiamo riempito la riga
            metti a zero quantielementipositivi // torniamo "a capo"
            rigacorrentepositivo++ // passiamo alla prossima riga
    
    ... analogamente per i negativi
    in quanto modo hai due indici per la memorizzazione: una riga, ed una colonna.
    Capisci che la riga è piena quando la colonna raggiunge la dimensione della riga, nel qual caso
    fai qualcosa di simile all'utilizzo di una macchina da scrivere: CR e LF (cioè vai a capo ed aumenti di una riga)

    l'alternativa più elegante è quello di calcolare le coordinate in cui memorizzare i dati come modulo e resto del numero degli elementi inseriti su dimensione riga, ma visto che sei ai primissimi passi inizierei con qualcosa simile a quanto sopra.
    Ultima modifica di MySQL; 26-05-2015 a 15:17

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    32
    non è che potreste aiutarmi scrivendolo in c o c++? perchè riesco a capirlo meglio

  7. #7
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,

    qui non si scrive codice pronto. Fai uno sforzo e prova a scriverlo tu... ti abbiamo detto praticamente tutto!

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.