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

Ćwiczenie 3 z lekcji 6 "Tablice zmiennych (stary kurs)

Ostatnio zmodyfikowano 2010-10-25 19:41
Autor Wiadomość
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:
C/C++
#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] =
            {
            tab1[0][0]+tab1[0][1],
            tab1[0][0]-tab1[0][1],
            tab1[0][0]*tab1[0][1],
            tab1[0][0]/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.
P-23309
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.
P-23310
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?
C/C++
#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;
}
P-23311
pekfos
» 2010-10-25 17:03:16
działa, bo wartości tab są znane w czasie kompilacji. kompilator dedukuje ich wartość. w przypadku
C/C++
int a = 9;
cin >> a;
int tab[ 2 ] = { a, a + 1 };
tab będzie miało wartość {9,10}
P-23313
marcin1133
Temat założony przez niniejszego użytkownika
» 2010-10-25 17:32:12
Ok, już wszystko (mam nadzieję) rozumiem.
P-23318
Elaine
» 2010-10-25 17:58:27
nie można używać do inicjalizacji zmiennych
O RLY? Można, można...
P-23320
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.
P-23323
« 1 »
  Strona 1 z 1