[C++] Po kompilacji program uruchamia sie ale nie działa
Ostatnio zmodyfikowano 2012-11-08 12:34
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:
#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. |
|
akwes |
» 2012-11-07 21:01:53 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. |
|
Mrovqa |
» 2012-11-07 21:04:35 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. |
|
blogther Temat założony przez niniejszego użytkownika |
» 2012-11-07 21:13:39 okey ale i tak jak poprawie i dam tak
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
|
|
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 |
|
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. |
|
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ś. |
|
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? |
|
« 1 » 2 |