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

[C++] Po kompilacji program uruchamia sie ale nie działa

Ostatnio zmodyfikowano 2012-11-08 12:34
Autor Wiadomość
blogther
Temat założony przez niniejszego użytkownika
[C++] Po kompilacji program uruchamia sie ale nie działa
» 2012-11-07 20:51:01
mam do policzenia sume argumentów kolumn w macierzy
oto kod ktory napisałem:
C/C++
#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

int main( int argc, char * argv[] )
{
    int n, m;
    float tablica[ n ][ m ];
    float suma[ n ];
    cout << "Podaj ilosc wierszy macierzy: ";
    cin >> n;
    cout << "Podaj ilosc kolumn macierzy: ";
    cin >> m;
    cout << "\nWpisz elementy do macierzy:" << endl;
    for( int i = 0; i < n; i++ )
    {
        for( int j = 0; j < m; j++ )
        {
            cout << "Wiersz nr: " << i + 1 << " Kolumna nr: " << j + 1 << endl;
            cin >> tablica[ i ][ j ];
        }
    }
    for( int k = 0; k < m; k++ )
    {
        for( int i = 0; i < n; i++ )
        {
            suma[ k ] = suma[ k ] + tablica[ i ][ k ];
        }
        cout << "Suma kolumny " << k + 1 << " wynosi: " << suma[ k ] << endl;
    }
    system( "PAUSE" );
    return EXIT_SUCCESS;
}
program kompiluje sie ale po uruchomieniu nic nie wyswietla sie na ekranie
gdzie jest bład?
Prosze o pomoc.
P-68761
akwes
» 2012-11-07 21:01:53
C/C++
int n, m;
float tablica[ n ][ m ];
float suma[ n ];

Takie rzeczy przechodzą tylko w DevC++. Rozmiar tablicy musi być znany w czasie kompilacji, albo trzeba korzystać z dynamicznej alokacji.
P-68769
Mrovqa
» 2012-11-07 21:04:35
C/C++
int n, m;
float tablica[ n ][ m ];
float suma[ n ];
Po pierwsze ustalasz rozmiar tablicy nieznanym rozmiarem - nie inicjalizujesz n i m. Po drugie zgodnie z nowymi standardami nie wolno tak definiować tablicy - z resztą to i tak bez sensu - przy dużych m i n dostaniesz stack overflowa.
P-68770
blogther
Temat założony przez niniejszego użytkownika
» 2012-11-07 21:13:39
okey ale i tak jak poprawie  i dam tak
C/C++
int n, m;
float suma[ n ];
cout << "Podaj ilosc wierszy macierzy: ";
cin >> n;
cout << "Podaj ilosc kolumn macierzy: ";
cin >> m;
cout << "\nWpisz elementy do macierzy:" << endl;
float tablica[ n ][ m ];
to jest cos nie tak jakis bład ma w tych petlach
P-68772
blogther
Temat założony przez niniejszego użytkownika
» 2012-11-07 21:16:05
okey juz znalazłem bład tam mam napisane tak
float suma[n]; a powinno byc float suma[m];
i teraz działa poprawnie
dziekuje za pomoc
P-68773
akwes
» 2012-11-07 21:16:17
Przed chwilą Ci powiedziałem, że



Rozmiar tablicy musi być znany w czasie kompilacji,

A u Ciebie dalej w trakcie kompilacji nie są znane rozmiary tablic. Albo podaj te rozmiary przed kompilacją albo użyj dynamicznej alokacji.

// edit
@blogther, to dalej jest źle, mimo że wygląda na ok.
P-68774
Mrovqa
» 2012-11-07 21:16:24
int n, m;
float suma[ n ]; // n jest znane? Wskaż mi wartość
cout << "Podaj ilosc wierszy macierzy: ";
cin >> n;
cout << "Podaj ilosc kolumn macierzy: ";
cin >> m;
cout << "\nWpisz elementy do macierzy:" << endl;
float tablica[ n ][ m ];
Wiesz co to dynamiczna alokacja? Nadal próbujesz to zrobić tak, jak robiłeś.
P-68775
blogther
Temat założony przez niniejszego użytkownika
» 2012-11-07 21:23:26
czyli błędem jest ze ten program działa przy takim kodzie?
wiec dlaczego w ogole działa i dlaczego wyniki w taki razie sa poprawne?
P-68778
« 1 » 2
  Strona 1 z 2 Następna strona