Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Błąd przy zamekaniu programu "Stack arround the variable was corrupted" i sprawdzenie programu

Ostatnio zmodyfikowano 2016-01-03 17:48
Autor Wiadomość
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
C/C++
#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 ); //do testowania generatora tablicy (znajduje się w tabgen.hpp)
    std::cout << "Tablica po clampie: \n";
    clamp < int >( 2, 6, tab, size );
    tabtest < int >( tab, size ); //do testowania generatora tablicy (znajduje się w tabgen.hpp)
    std::cout << "Tablica po sortowaniu: \n";
    bubblesort < int >( tab, size );
    tabtest < int >( tab, size ); //do testowania generatora tablicy (znajduje się w tabgen.hpp)
    std::cout << "Srednia tablicy: \n";
    std::cout << avg < int >( tab, size ) << "\n";
    getchar();
    return 0;
}

tabgen.hpp
C/C++
#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
C/C++
#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
C/C++
#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
C/C++
#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
C/C++
#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
C/C++
#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
C/C++
#ifndef clamp_hpp
#define clamp_hpp

template < typename typ >
typ clamp( typ a, typ b, typ c ) // a-minimalna, c-maksymalna, b-liczba
{
    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 ) // a-minimalna, c-maksymalna, tab-tablica liczb, size-rozmiar tablicy
{
    for( int i = 1; i <= size; i++ )
    {
        tab[ i ] = clamp < int >( 2, tab[ i ], 6 );
    }
}

#endif

clamp.cpp
C/C++
#include <iostream>

template < typename typ >
typ clamp( typ a, typ b, typ c ) // a-minimalna, c-maksymalna, b-liczba
{
    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 ) // a-minimalna, c-maksymalna, tab-tablica liczb, size-rozmiar tablicy
{
    for( int i = 1; i <= size; i++ )
    {
        tab[ i ] = clamp < int >( 2, tab[ i ], 6 );
    }
}

P-142764
carlosmay
» 2016-01-03 12:59:27
C/C++
int tab[ size ]; // ile wynosi zmienna 'size' i czy jest const?? [/cpp]
P-142767
dovah993
Temat założony przez niniejszego użytkownika
» 2016-01-03 17:29:00
Zmienna size jest stałą o wartości 10
P-142778
j23
» 2016-01-03 17:48:39
Wychodzisz poza tablicę w tego typu pętlach:
C/C++
for( typ i = 1; i <= size; i++ )
{
    tab[ i ] =...;
}
indeks i nie może być równy wielkości tablicy.
P-142779
« 1 »
  Strona 1 z 1