Visual studio 2015 c++

di Anonimizzato28513 il
20 risposte
Ciao Ragazzi, sto studiando per un esame di informatica generale e dovrei programmare in c++.
uso visual studio 2015. scrivendo un codice mi è uscito questo segnale di errore, sapreste il significato?
Unhandled exception at 0x00412949 in Project371.exe: Stack cookie instrumentation code detected a stack-based buffer overrun.

20 Risposte

  • Fai vedere il codice.
    Perché usi il 2015?
  •  #include <iostream>
    #define DIM 10
    using namespace std;
    int main()
    {
    	int a[DIM], i, b, temp, cont=0,t=0;
    	b = 2;
    	for (i = 0; i < DIM; i++)
    	{
    		cin >> a[i];
    	}
    	for (i = 0; i < DIM; i++)
    	{
    		if (a[i] == a[i + b])
    		{
    			cont++;
    		}
    		if ((i + b) >= 0 && (i + b) <= 9)
    		{
    			temp = a[i];
    			a[i] = a[i + b];
    			a[i + b] = temp;
    		}
    		if (cont > 0)
    		{
    			t = 1;
    		}
    	}
    	return 0;
    }

    il prof mi ha detto di usare quello
  • a[i + b]
    Se i è uguale a 9, approda in a[11].
  • E però ho messo l'if (i+b) <=9 di modo che non esca fuori dal vettore.
    la traccia dice per ogni i scambiare
    a[i] 
    con a[i+b]
    e ho ipotizzato che b fosse 2
  • Parlo del primo if:
    
    if (a[i] == a[i + b])
    {
    	cont++;
    }
    
    Stai confrontando a(i) con un numero sconosciuto.
  • No, in pratica la seconda parte dell'esercizio dice "inserire in t il valore 1 se sono stati scambiati due valori identici" quindi io prima di fare lo scambio controllo se vi sono per ogni posizione i elementi identici.
    il vettore è carico di numeri, poichè li inserisco nella prima scrittura
  • Va bene, ma non hai controllato se i+b sfora la dimensione del vettore, cosa che succede per i maggiore di 7.
  • Quando esegui

    if (a[ i ] == a[i + b])

    alla fine del ciclo quanto vale [i+b] ?
  • Alexv ha scritto:


    Va bene, ma non hai controllato se i+b sfora la dimensione del vettore, cosa che succede per i maggiore di 7.
    nulla, perchè a me interessa lavorare su quei valori all'interno del vettore
  • oregon ha scritto:


    Quando esegui

    if (a[ i ] == a[i + b])

    alla fine del ciclo quanto vale [i+b] ?
    alla fine del ciclo ogni elemento del vettore si sarà confrontato con quello in posizione i+b, di conseguenza l'ultimo elemento all'interno del vettore è quello in posizione 9
  • Non hai risposto alla mia domanda. Rileggila
  • Vale quanto
     a[i]  
  • Veramente io ti ho chiesto quanto vale l'indice i+b
  • Mmmh 11?
Devi accedere o registrarti per scrivere nel forum
20 risposte