Ćwiczenie 3 z lekcji 6 "Tablice zmiennych (stary kurs)
Ostatnio zmodyfikowano 2010-10-25 19:41
marcin1133 Temat założony przez niniejszego użytkownika |
Ćwiczenie 3 z lekcji 6 "Tablice zmiennych (stary kurs) » 2010-10-25 16:04:07 Witam! Jako że nie pojawiają się nowe lekcje tego nowego kursu postanowiłem przerobić starą wersję :) Mam problem z jednym z ćwiczeń. Ćwiczenie polega na napisaniu prostego program, który poprosi o dwie liczby zapisze je do tablicy, wykona na nich działania i wyniki również zapisze do tablicy. Zrobiłem to w taki sposób: #include <iostream> #include <conio.h> using namespace std; int main() { float tab1[ 2 ][ 4 ]; cout << "\tPodaj dwie liczby!\n\n" << "Pierwsza: "; cin >> tab1[ 0 ][ 0 ]; cout << "Druga: "; cin >> tab1[ 0 ][ 1 ]; tab1[ 1 ][ 0 ] = tab1[ 0 ][ 0 ] + tab1[ 0 ][ 1 ]; tab1[ 1 ][ 1 ] = tab1[ 0 ][ 0 ] - tab1[ 0 ][ 1 ]; tab1[ 1 ][ 2 ] = tab1[ 0 ][ 0 ] * tab1[ 0 ][ 1 ]; tab1[ 1 ][ 3 ] = tab1[ 0 ][ 0 ] / tab1[ 0 ][ 1 ]; cout << "\n\n\n\tUzytkownik podaj nastepujace liczby\n" << "Liczba 1 = " << tab1[ 0 ][ 0 ] << endl << "Liczba 2 = " << tab1[ 0 ][ 1 ] << "\n\n" << "Wynik dodawania\n" << tab1[ 0 ][ 0 ] << " + " << tab1[ 0 ][ 1 ] << " = " << tab1[ 1 ][ 0 ] << "\nWynik odejmowania\n" << tab1[ 0 ][ 0 ] << " - " << tab1[ 0 ][ 1 ] << " = " << tab1[ 1 ][ 1 ] << "\nWynik mnożenia\n" << tab1[ 0 ][ 0 ] << " * " << tab1[ 0 ][ 1 ] << " = " << tab1[ 1 ][ 2 ] << "\nWynik dzielenia\n" << tab1[ 0 ][ 0 ] << " / " << tab1[ 0 ][ 1 ] << " = " << tab1[ 1 ][ 3 ]; getch(); return 0; }
Czy jest jakaś możliwość żeby nie deklarować oddzielnie każdej zmiennej z tablicy? Próbowałem to zrobić (zakomentowana część), ale jest tam jakiś błąd. |
|
pekfos |
» 2010-10-25 16:27:21 tak nie można. inicjalizacja agregatowa jest możliwa tylko przy deklaracji tablicy. i do tego: nie można używać do inicjalizacji zmiennych. tylko stałe gdyż wartości muszą być znane w czasie kompilacji. |
|
marcin1133 Temat założony przez niniejszego użytkownika |
» 2010-10-25 16:41:21 W porządku, dzięki za pomoc. Mam tylko jedną wątpliwość. Napisałeś "nie można używać do inicjalizacji zmiennych. tylko stałe gdyż wartości muszą być znane w czasie kompilacji." To jak wytłumaczysz to, że poniższy program działa? #include <iostream> #include <conio.h> using namespace std; int main() { int tab[] = { 2 + 7 * 16 - 8, 22 * 2 / 11, 8383 - 222 + 292 * 8, 5 * 2 * 4 }; cout << "\tTabela pierwsza: \n\nWynik1 - " << tab[ 0 ] << "\nWynik2 - " << tab[ 1 ] << "\nWynik3 - " << tab[ 2 ] << "\nWynik4 - " << tab[ 3 ]; int Tab[ 4 ] = { tab[ 0 ] * 2 - 13, tab[ 1 ] - 4 + 1, tab[ 2 ] + 88 - 250, Tab[ 0 ] + Tab[ 1 ] + Tab[ 2 ] }; cout << "\n\n\tTabela druga: \n\Wynik1 - " << Tab[ 0 ] << "\nWynik2 - " << Tab[ 1 ] << "\nWynik3 - " << Tab[ 2 ] << "\nWynik4 - " << Tab[ 3 ]; getch(); return 0; }
|
|
pekfos |
» 2010-10-25 17:03:16 działa, bo wartości tab są znane w czasie kompilacji. kompilator dedukuje ich wartość. w przypadku int a = 9; cin >> a; int tab[ 2 ] = { a, a + 1 };
tab będzie miało wartość {9,10} |
|
marcin1133 Temat założony przez niniejszego użytkownika |
» 2010-10-25 17:32:12 Ok, już wszystko (mam nadzieję) rozumiem. |
|
Elaine |
» 2010-10-25 17:58:27 nie można używać do inicjalizacji zmiennych |
O RLY? Można, można... |
|
pekfos |
» 2010-10-25 19:41:36 no, już wyjaśnione że można a używaną wartością jest ta którą zainicjalizowano zmienną lub śmieci. |
|
« 1 » |