Temat: Skrajne elementy tablicy w C


#include <stdio.h>

int main(){

int w = 6;
int k = 6;
int tab[w][k];
int i;
int j;
int suma_parzystych = 0;
int suma_nieparzystych = 0;
int spn = 0; // suma elementow o indeksach parzystych z kolumn o nieparzystych nr
int suma_skrajnych = 0;
int x;

for(i=0;i<w;i++){
for(j=0;j<k;j++){
printf("Podaj element tablicy tab[%d][%d]",i,j);
scanf("%d", &x);
tab[i][j]=x;
}
}



//wypisanie tablicy
for (i=0; i<w; i++){
printf("\n");
for(j=0;j<k;j++){
printf("%d\t", tab[i][j]);
}
}

//suma elementow wierszy parzystych
for (i=0; i<w;i++){
for(j=0;j<k;j++){
if((i+1)%2==0){
suma_parzystych+=tab[i][j];
}
}
}
printf("Suma elementow wierszy parzystych to %d\n", suma_parzystych);



//suma elementow nieparzystych
for (i=0; i<w; i++){
for(j=0;j<k;j++){
if((i+1)%1==0){
suma_nieparzystych+=tab[i][j];
}
}
}

printf("Suma elementow kolumn nieparzystych to %d\n", suma_nieparzystych);

//suma elementow o indeksach parzystych ale z kolumn nieparzystych
for(i=0; i<w; i++){
for(j=0; j<k;j++){
spn+= tab[i][j];
}
}

printf("Suma elementow o indeksach parzystych z kolumn o nieparzystych nr %d\n", spn);

//suma elementow skrajnych
for(i=0;i<w;i++){
for(j=0; j<k; j++){
suma_skrajnych = tab[0][0] + tab[i][j]; //pierwszy i ostatni element
}
}
printf("Suma elementow skrajnych to %d\n", suma_skrajnych);

//maksimum skrajnych elementow
for(i=0;i<w;i++){
for(j=0; j<k; j++){



return 0;
}


W jaki sposób mogę obliczyć maksimum skrajnych elementów tablicy? (chodzi chyba o pierwszy i ostatni element i wybrać z nich największą liczbę).

Pseudokod:

Próbowałem normalnie if'em porównać np. if tab[0][0] > tab[i][j] printf ("maksimum to %d", tab[0][0] else printf maksimum to tab[i][[j] ale zawsze zwracało że maksimum to 0

konto usunięte

Temat: Skrajne elementy tablicy w C

Mam nadzieję, że to Cię zainspiruje.


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]) {
int i, j, num;
int first, last;

int rows = 6;
int columns = 6;
int table[rows][columns];

for (i = 0, num = 0; i < rows; i++) {
for (j = 0; j < columns; j++, num++)
table[i][j] = num;
}

/*
Magic happens here. Static two-dimensional arrays consist
of contiguous space so it's just a matter of some simple
pointer arithmetics:
http://c-faq.com/~scs/cclass/notes/sx10b.html
*/
first = **table;
last = *(*table + rows * columns - 1);

printf("First element is %d\n", first);
printf("Last element is %d\n", last);
printf("Their maximum is %d\n", first > last ? first : last);

return EXIT_SUCCESS;
}
Marcin W. edytował(a) ten post dnia 16.12.11 o godzinie 23:37

konto usunięte

Temat: Skrajne elementy tablicy w C

Nie zdefiniowałeś co znaczy "element skrajny", ale zakładam, że chodzi o pierwszy i ostatni element w każdym wierszu.
W każdym razie część "suma elementów skrajnych" jest na pewno do wymiany.


#define MAX(a, b) (((a) > (b)) ? (a) : (b))

int maxs = tab[0][0];

for(i=0;i<w;i++){
maxs = MAX(maxs, tab[i][0]);
maxs = MAX(maxs, tab[i][k-1]);
}

printf("Maksimum elementow skrajnych to %d\n", maxs);
Piotr L. edytował(a) ten post dnia 20.12.11 o godzinie 20:28
Jan Kowalski

Jan Kowalski Specjalista

Temat: Skrajne elementy tablicy w C

czym sa "i" i "k"?
Andrzej L.

Andrzej L. Java Developer, ING
Bank Śląski SA

Temat: Skrajne elementy tablicy w C

i - zmienna iterująca
k - ilość kolumn
w - ilość wierszy

ogólnie

maxs to pierwszy element tablicy;

dla każdego wiersza W {
maxs przypisz W[0] jeżeli W[0] jest większe
maxs przypisz W[k-1] jeżeli W[k-1] jest większe
}

Maxs - maksymalny element skrajny w tablicy;

Następna dyskusja:

Niby proste, zwracanie wska...




Wyślij zaproszenie do