[C++] Błąd przy zamekaniu programu "Stack arround the variable was corrupted" i sprawdzenie programu
Ostatnio zmodyfikowano 2016-01-03 17:48
dovah993 Temat założony przez niniejszego użytkownika |
[C++] Błąd przy zamekaniu programu "Stack arround the variable was corrupted" i sprawdzenie programu » 2016-01-03 12:42:14 Po zakończeniu programu wyskakuje mi dokładnie następujący błąd: Run-Time Check Failure #2 - Stack around the variable 'tab' was corrupted.
Oto pliki które posiadam (są one już kompletne, po raz pierwszy operowałem na wielu plikach i szablonach, prosiłbym przy okazji o uwagi jeżeli jest coś nie tak, bo wydaje mi się że w plikach cpp i hpp nie musi być to samo jak jest u mnie). main.cpp #include <iostream> #include <ctime> #include <stdio.h> #include "clamp.hpp" #include "bubblesort.hpp" #include "tabgen.hpp" #include "avg.hpp" #define size 10
int main( void ) { srand( time( 0 ) ); std::cout << "Operacja na jednej liczbie: \n"; std::cout << clamp < int >( 2, 4, 6 ) << "\n"; int tab[ size ]; std::cout << "Tablica po generacji: \n"; tabgen < int >( tab, size ); tabtest < int >( tab, size ); std::cout << "Tablica po clampie: \n"; clamp < int >( 2, 6, tab, size ); tabtest < int >( tab, size ); std::cout << "Tablica po sortowaniu: \n"; bubblesort < int >( tab, size ); tabtest < int >( tab, size ); std::cout << "Srednia tablicy: \n"; std::cout << avg < int >( tab, size ) << "\n"; getchar(); return 0; }
tabgen.hpp #ifndef tabgen_hpp #define tabgen_hpp
template < typename typ > void tabgen( typ tab[], typ size ) { for( typ i = 1; i <= size; i++ ) { tab[ i ] = rand() % size; } }
template < typename typ > void tabtest( typ tab[], typ size ) { std::cout << "TESTUJEMY\n"; for( typ i = 1; i <= size; i++ ) { std::cout << tab[ i ] << "\n"; } }
#endif
tabgen.cpp #include <iostream>
template < typename typ > void tabgen( typ tab[], typ size ) { for( typ i = 0; i <= size; i++ ) { tab[ i ] = rand() % size; } }
template < typename typ > void tabtest( typ tab[], typ size ) { std::cout << "TESTUJEMY\n"; for( typ i = 0; i <= size; i++ ) { std::cout << tab[ i ] << "\n"; } }
avg.hpp #ifndef avg_hpp #define avg_hpp
template < typename typ > double avg( typ tab[], typ size ) { typ avgtemp = 0; double avgret = 0; for( typ i = 1; i <= size; i++ ) { avgtemp += tab[ i ]; } avgret = double( avgtemp ) / double( size ); return avgret; }
#endif
avg.cpp #include <iostream>
template < typename typ > double avg( typ tab[], typ size ) { typ avgtemp = 0; double avgret = 0; for( typ i = 1; i <= size; i++ ) { avgtemp += tab[ i ]; } avgret = double( avgtemp ) / double( size ); return avgret; }
bubblesort.hpp #ifndef bubblesort_hpp #define bubblesort_hpp
template < typename typ > void bubblesort( typ tab[], typ size ) { typ temp = 0; for( typ i = 1; i <= size; i++ ) { for( typ j = 1; j <= size - 1; j++ ) { if( tab[ j ] > tab[ j + 1 ] ) { temp = tab[ j ]; tab[ j ] = tab[ j + 1 ]; tab[ j + 1 ] = temp; } } } }
#endif
bubblesort.cpp #include <iostream> #include <stdio.h>
template < typename typ > void bubblesort( typ tab[], typ size ) { typ temp = 0; for( typ i = 1; i <= size; i++ ) { for( typ j = 1; j <= size - 1; j++ ) { if( tab[ j ] > tab[ j + 1 ] ) { temp = tab[ j ]; tab[ j ] = tab[ j + 1 ]; tab[ j + 1 ] = temp; } } } }
clamp.hpp #ifndef clamp_hpp #define clamp_hpp
template < typename typ > typ clamp( typ a, typ b, typ c ) { if( b < a ) { return a; } if( b > c ) { return c; } if(( a <= b ) &&( b <= c ) ) { return b; } }
template < typename typ > void clamp( typ a, typ c, typ tab[], typ size ) { for( int i = 1; i <= size; i++ ) { tab[ i ] = clamp < int >( 2, tab[ i ], 6 ); } }
#endif
clamp.cpp #include <iostream>
template < typename typ > typ clamp( typ a, typ b, typ c ) { if( b < a ) { return a; } if( b > c ) { return c; } if(( a <= b ) &&( b <= c ) ) { return b; } }
template < typename typ > void clamp( typ a, typ c, typ tab[], typ size ) { for( int i = 1; i <= size; i++ ) { tab[ i ] = clamp < int >( 2, tab[ i ], 6 ); } }
|
|
carlosmay |
» 2016-01-03 12:59:27 |
|
dovah993 Temat założony przez niniejszego użytkownika |
» 2016-01-03 17:29:00 Zmienna size jest stałą o wartości 10 |
|
j23 |
» 2016-01-03 17:48:39 Wychodzisz poza tablicę w tego typu pętlach: for( typ i = 1; i <= size; i++ ) { tab[ i ] =...; } |
indeks i nie może być równy wielkości tablicy. |
|
« 1 » |