Visualizzazione dei risultati da 1 a 3 su 3

Discussione: matrici c++

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    67

    matrici c++

    sto provando a scrivere un programma che inserisca una riga in una matrice. Il programma chiede da tastiera il posto in cui si vuole inserire la nuova riga e il vettore rappresentante appunto questa riga... Solo che ho un problema:la riga me la inserisce al posto ke desidero io, ma la riga ke c'era a quel posto viene cancellata...invece io vorrei cancellare l'ultima e far scalare tutte le altre..se non avete capito chiedetemi qualche altra cosa...questo è il codice che ho scritto fino ado ora


    #include <iostream>
    using namespace std;
    void leggi_mat(int m[100][100], int &c, int&r);
    void ins_riga(int m[][100],int r,int c, int postox);


    int main()
    {int m[100][100];
    int postox=0,r,c,x,y;
    cout<<"righe=";
    cin>>r;
    cout<<"colonne=";
    cin>>c;
    leggi_mat(m,r,c);
    cout<<"postox";
    cin>>postox;
    ins_riga(m,r,c,postox);

    system("PAUSE");
    }
    void leggi_mat(int m[100][100], int &c, int&r)
    {int i,j;
    for(i=0;i<r;i++)
    for(j=0;j<c;j++)
    {cout<<"m["<<i<<"]["<<j<<"]";
    cin>>m[i][j];}}

    void ins_riga(int m[100][100],int r,int c, int postox)
    {int i,temp,k,j;
    for(k=0;k<c;k++)
    cin>>m[postox][k];

    for (i=postox;i<r;i++)
    {for(j=0;j<c;j++)
    i=r;
    m[postox][j]=m[postox+1][j];


    }
    for(int i=0;i<r;i++)
    {for(int j=0;j<c;j++)
    cout<<m[i][j]<<"\t";
    cout<<endl; }

    }

  2. #2
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Ciao....prima di tutto quando si deve postare del codice, bisogna usare l'apposito tag (#).
    Poi è sempre meglio dare al codice un pò d'indentazione, in maniera da renderlo un pò più leggibile, altrimenti è anche più difficile aiutarti.

    Questo è il codice che hai scritto tu:

    codice:
    #include <iostream>
    using namespace std;
    void leggi_mat(int m[100][100], int &c, int&r);
    void ins_riga(int m[][100],int r,int c, int postox);
    
    
    int main()
    {
        int m[100][100];
        int postox=0,r,c,x,y;
        cout<<"righe=";
        cin>>r;
        cout<<"colonne=";
        cin>>c;
        leggi_mat(m,r,c);
        cout<<"postox";
        cin>>postox;
        ins_riga(m,r,c,postox);
    
        system("PAUSE");
    }
    
    void leggi_mat(int m[100][100], int &c, int&r)
    {
        int i,j;
        for(i=0;i<r;i++)
            for(j=0;j<c;j++)
            {
                cout<<"m["<<i<<"]["<<j<<"]";
                cin>>m[i][j];
            }
    }
    
    void ins_riga(int m[100][100],int r,int c, int postox)
    {
        int i,temp,k,j;
        for(k=0;k<c;k++)
            cin>>m[postox][k];
    
        for (i=postox;i<r;i++)
        {
            for(j=0;j<c;j++)
                i=r;
            m[postox][j]=m[postox+1][j];
        }
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
                cout<<m[i][j]<<"\t";
            cout<<endl;
        }
    }
    Se esegui la parte di codice segnata in rosso prima di spostare le altre, i precedenti valori della riga di indice postox vanno persi. Quindi prima devi spostare le righe e poi acquisire i valori della nuova riga.
    Un consiglio: in queste situazioni conviene sempre cominciare lo spostamento dalla penultima riga.
    Crestron Control Systems and AMX Control Systems Programmer

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    67
    ok grazie ora funziona bene...

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.