1) Napisać możliwie najlepszy podprogram ktory dla tablicy kwadratowej typu
#define NMAX ....
typedef double[NMAX][NAMX] ttab
(tablica i jej graniczny indeks użyteczności przekazane jako argumenty wywolania podprogramu) odwróci kolejność wierszy zawartych w tej tablicy
2)Napisać możliwie najlepsza funkcje, która dla tablicy kwadratowej o wymiarach nxn zawierającej liczby rzeczywiste (tablica i jej rozmiar przekazane jako argumenty wywołania funkcji) zwróci wartość średniej elementów znajdujących sie pod główną przekątną (główna przekątną tworzą te elementy \(\displaystyle{ a_{ij}}\) których indeksy są równe, czyli i=j).
3) Napisać mozlwie najlepsza funkcje, która dla tablicy kwadratowej o wymiarach N_MAX x N_MAX i wypełnieniu nxn (część tablicy wypełniona wartościami) zawierającej liczby rzeczywiste(tablica przekazywana jako argument wywolania funkcji, podobnie jak rozmiar części wypełnionej) zwróci wartość średnią elementów leżących w części nad obiema głównymi przekątnymi (przekątne tworzą elementy \(\displaystyle{ a_{ii}}\) oraz \(\displaystyle{ a_{i,n-i-1}}\) dla i=0...n-1
Podporgram- tablica kwadratowa
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
Podporgram- tablica kwadratowa
Kod: Zaznacz cały
#include <stdio.h>
#define NMAX 10
typedef double ttab[NMAX][NMAX] ;
int wypisztablice( ttab t, int imax) {
int i, j;
for(i = 0; i < imax; i++) {
for(j = 0; j < imax; j++)
printf("%7f ", t[i][j]);
puts("");
}
return 0;
}
/* Zad 1 */
int odwrocwiersze( ttab t, int imax) {
register double f;
register int i, ik, j;
for(j = 0; j < imax; j++) /* kolejne wiersze */
for(i = 0, ik = imax - 1; i < ik; i++, ik--) { /* kolejne kolumny */
f = t[j][i]; /* zapamiętaj liczbę z początku wiersza */
t[j][i] = t[j][ik]; /* wpisz w początkową liczbę, liczbę z końca */
t[j][ik] = f; /* wpisz w końcową liczbę, liczbę zapamiętaną liczbę */
}
return 0;
}
/* Zad 2
zwróci wartość średniej elementów znajdujących sie pod główną przekątną */
double srednia2( ttab t, int imax) {
register double f = 0.0;
register int i, j, ilicznik = 0;
for(j = 0; j < imax; j++) /* kolejne wiersze */
for(i = j + 1; i < imax; i++) { /* kolejne kolumny */
f += t[j][i]; /* suma */
ilicznik++; /* liczba elementów */
}
if (ilicznik)
return (f / ilicznik);
else
return f;
}
/* Zad 3
zwróci wartość średnią elementów leżących w części nad obiema głównymi przekątnymi */
double srednia3(ttab t, int imax) {
register double f = 0.0;
register int i, ik, j, ilicznik = 0;
for(j = 0; j < imax; j++) /* kolejne wiersze */
for(i = j + 1, ik = imax - i; i < ik; i++) { /* kolejne kolumny */
f += t[j][i]; /* suma */
ilicznik++; /* liczba elementów */
}
if (ilicznik)
return (f / ilicznik);
else
return f;
}
int main() {
ttab t1 = {
{1, 2, 3, 3, 4},
{4, 5, 6, 7, 8},
{7, 8, 9, 9 ,9},
{1, 2, 3, 3, 5},
{1, 2, 3, 3, 6}};
puts("Tablica podstawowa");
wypisztablice(t1, 5);
puts("");
printf("Srednia nad glowna przekatna %f", srednia2(t1, 5));
puts("");
printf("Srednia nad przekatnymi %f", srednia3(t1, 5));
puts("");
puts("Tablica z odwroconymi wierszami");
odwrocwiersze(t1, 5);
wypisztablice(t1, 5);
return 0;
}
-
- Użytkownik
- Posty: 384
- Rejestracja: 12 lut 2007, o 19:40
- Płeć: Mężczyzna
- Lokalizacja: wawa
- Podziękował: 77 razy
- Pomógł: 1 raz
Podporgram- tablica kwadratowa
a jak zrobic kopiowanie elemnntow tablicy w wierszu? tak zeby nei gubilo zadnego elelemntu, wszystko sie musi miescic w tablicy
np skopiowanie i do j
```````````` _______
____________|_______|__
i|___L___| j
a takze tak
``````j ________
_______|_______|__
i|___L___|
wtedy musi kopiowac od konca
np skopiowanie i do j
```````````` _______
____________|_______|__
i|___L___| j
a takze tak
``````j ________
_______|_______|__
i|___L___|
wtedy musi kopiowac od konca
-
- Użytkownik
- Posty: 374
- Rejestracja: 21 cze 2007, o 11:28
- Płeć: Mężczyzna
- Lokalizacja: Łostowice
- Pomógł: 146 razy
Podporgram- tablica kwadratowa
Kod: Zaznacz cały
#include <stdio.h>
#define NMAX 16
/* i - od którego elementu kopiujemy
j - do któego element kopiujemy
l - długość przedziału
NMAX - długość tablicy */
int przepisz(int t[], int i, int j, int l) {
int n;
if (i == j)
return 0; /* nie ma co przepisywać */
if (j < i)
for(n = 0; (n < l) && ((i + n) < NMAX); n++)
t[j + n] = t[i + n];
else
for(n = l - 1; n >= 0; n--)
t[j + n] = t[i + n];
return 0;
}
int wypisz(int t[]) {
int i;
for(i = 0; i < NMAX; i++)
printf("%2d ", t[i]);
return 0;
}
int main() {
int t2[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
wypisz(t2); puts("");
przepisz(t2, 7, 0, 10);
wypisz(t2); puts("");
return 0;
}