|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Feb 2011
Messaggi: 2013
|
[C++] Modificare elementi di un Array
Ragazzi oggi mi sono imbattuto in un problema veramente stupido, suppongo.. ma non riesco a venire a capo.
In un programma che sto facendo ho bisogno di poter modificare un array bidimensionale 2x2 che viene inizializzato con tutti gli elementi a zero. Eseguendo il codice che vi riporto più sotto, mi sono accorto che l'array veniva sballato dopo la modifica.. così ho aggiunto altre righe di codice per vedere dove fosse il problema.. in pratica dopo avere preso in input x e y non so perché ma il valore della y sballa e l'array di conseguenza non viene modificato correttamente o.o Dov'è che sbaglio ? non riesco proprio a capire.. Codice:
#include<iostream>
using namespace std ;
int main ()
{
int x, y, nuovo ;
int v[2][2] ;
for (int i=0; i<3; i++) // inizializzazione array
{
for (int j=0; j<3; j++)
{
v[i][j] = 0 ;
}
}
for (int i=0; i<3; i++) // stampa di verifica array
{
for (int j=0; j<3; j++)
{
cout.width(3);
cout << v[i][j] ;
}
cout << endl ;
}
cout << " insersci la posizione dove vuoi inserire un nuovo elemento : " ;
cout << " inserisci x = " ;
cin >> x ;
cout << " inserisci y = " ;
cin >> y ;
cout << " che numero vuoi inserire ? " ;
cin >> nuovo ;
cout << endl ;
v[x][y] = nuovo ;
cout << nuovo << " e stato inserito nella posizione " << x << " ," << y ; // verifica che i valori x e y siano corretti.. qui è dove trovo l'errore
for (int i=0; i<3; i++) //stampa array modificato
{
for (int j=0; j<3; j++)
{
cout.width(3) ;
cout << v[i][j] ;
}
cout << endl ;
}
system ("PAUSE") ;
return 0 ;
}
__________________
CPU: Intel i5 2500k; GPU: Asus GTX 970 ; Scheda audio: Asus Xonar U7; RAM: 16GB DDR3; Storage: HD 750GB+SSD Samsung 840 (128GB); OS: Arch Linux | Linux Mint 18 | Win 7 (gaming) Thread ufficiali |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Perchè inizializzi con 2 elementi e invece nei cicli scrivi 3?
Negli array array[0] --> elemento numero uno array[1] --> elemento numero due e così via Nei cicli Codice:
for(int i = 0; i < 2; i++){....}
Codice:
for(int i = 0; i < 3; i++){....}
ti consiglio per non fare errori di questo tipo di definirti una macro Codice:
#define SIZE 2 Codice:
int array[SIZE]......
for(int i = 0; i < SIZE; i++){...}
Ultima modifica di clockover : 12-08-2011 alle 21:07. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jul 2008
Messaggi: 8357
|
Ricordati che in informatica si parte a contare da ZERO 0. Il tuo v è:
v[0][0] v[0][1] v[1][0] v[1][1]
__________________
System Failure |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Feb 2011
Messaggi: 2013
|
EDIT: ah credo di aver capito.. un attimo che verifico xD
Sì come immaginavo era un errore stupido.. sbagliavo all'inizio inizializzando v[2][2] l'array mi serviva di 3 righe x 3 colonne e non so perché io credevo che inizializzando v[2][2] avrei avuto 3 colonne e 3 righe.. bah xD comunque grazie per i suggerimenti e le risposte veloci
__________________
CPU: Intel i5 2500k; GPU: Asus GTX 970 ; Scheda audio: Asus Xonar U7; RAM: 16GB DDR3; Storage: HD 750GB+SSD Samsung 840 (128GB); OS: Arch Linux | Linux Mint 18 | Win 7 (gaming) Thread ufficiali Ultima modifica di IngMetallo : 12-08-2011 alle 21:31. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jun 2003
Città: Monopoli
Messaggi: 2789
|
Quote:
__________________
CASE: Antec P182 - ALI: Corsair CX650M - CPU: AMD Ryzen 5 PRO 4650G + Cooler Master Hyper 212X - MB: ASUS PRIME A520M-K -RAM: G.SKILL Aegis 3200MHz 16GB - SSD: SanDisk Plus SSD 240GB - SA: Asus Xonar Essence STX - MOUSE: Logitech G9 - CUFFIE: Sennheiser HD 595 - *STEAM* |
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Feb 2011
Messaggi: 2013
|
Quote:
I cicli for ripetevano il blocco di istruzioni al loro interno 3 volte e quindi andava bene. Il problema era che l'array bidimensionale aveva solo 4 "elementi" (2x2) al posto dei 9 (3x3)che mi servivano.. E' che ricordavo male come si inizializzassero gli array.. e io che stavo pensando a tutt'altro.. Era veramente banale e infatti è stata l'unica cosa che non ho ricontrollato del programma.. la prossima volta farò attenzione anche alle cose più banali
__________________
CPU: Intel i5 2500k; GPU: Asus GTX 970 ; Scheda audio: Asus Xonar U7; RAM: 16GB DDR3; Storage: HD 750GB+SSD Samsung 840 (128GB); OS: Arch Linux | Linux Mint 18 | Win 7 (gaming) Thread ufficiali |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:04.




















