Witam!
Mam do zrobienia dwa projekty w języku C. Trochę już zrobiłem jednak mam wiele wątpliwości.
Zadanie 1.
Proszę napisać algorytm, który dla dwuwymiarowej tablicy wyznacza numer wiersza [lub wierszy] o maksymalnej sumie elementów.
przykład: dla tablicy o 4 wierszach i 3 kolumnach:
1 5 1
2 3 3
2 2 2
4 3 3
będzie to indeks 3. W wierszach: o indeksie 0 suma wynosi 7, o indeksie 1 suma wynosi 8, o indeksie 2 suma wynosi 6, o indeksie 3 suma wynosi 10. Maksymalną sumę zawiera wiersz o indeksie 3.
Mój kod jaki napisałem:
Czy tego kodu nie da się napisać prościej, używając mniej zmiennych?? Czy na pewno jest on poprawny??
Zadanie 2.
Proszę napisać algorytm, który wypełnia ,,jodełką" tablicę kwadratową o wymiarze n.
przykład: dla n równego 5, tablica ta jest postaci:
1 1 1 1 1
1 2 2 2 2
1 2 3 3 3
1 2 3 4 4
1 2 3 4 5
Mój kod jaki napisałem:
Ale to nie działa poprawnie
Nie mam pojęcia jak napisać go dobrze. Siedziałem z kumplem nad tym i nic. Macie jakieś pomysły??
Programy mają być napisane w czystym C, używając tylko if, while, do while ale bez pętli for.
Z góry dziękuję za pomoc.
Pozdrawiam.
P.S Za pomoc oczywiście punkty
Mam do zrobienia dwa projekty w języku C. Trochę już zrobiłem jednak mam wiele wątpliwości.
Zadanie 1.
Proszę napisać algorytm, który dla dwuwymiarowej tablicy wyznacza numer wiersza [lub wierszy] o maksymalnej sumie elementów.
przykład: dla tablicy o 4 wierszach i 3 kolumnach:
1 5 1
2 3 3
2 2 2
4 3 3
będzie to indeks 3. W wierszach: o indeksie 0 suma wynosi 7, o indeksie 1 suma wynosi 8, o indeksie 2 suma wynosi 6, o indeksie 3 suma wynosi 10. Maksymalną sumę zawiera wiersz o indeksie 3.
Mój kod jaki napisałem:
/* Program wskazujacy numer wiersza z najwieksza suma */
#include <stdio.h>
int main (void)
{
int tablica[8][3]={
{2, 4, 6},
{2, 4, 6},
{2, 4, 6},
{2, 4, 6},
{2, 4, 6},
{2, 4, 6},
{2, 4, 6},
{2, 4, 6}
};
int w, k, suma, suma_pom, wiersz;
suma = suma_pom = w = wiersz = 0;
while(w < 8)
{
k = 0;
while(k < 3)
{
suma = suma + tablica[w][k];
k++;
}
if (suma > suma_pom){
wiersz = w;
suma_pom = suma;
};
suma = 0;
w++;
}
printf("Najwieksza suma: %d\n", suma_pom);
printf("Numer wiersza z najwieksza suma: ");
int suma_pom2;
suma_pom2 = suma_pom;
suma = suma_pom = w = wiersz = 0;
while(w < 8)
{
k = 0;
while(k < 3)
{
suma = suma + tablica[w][k];
k++;
}
if (suma >= suma_pom){
wiersz = w;
suma_pom = suma;
if (suma_pom2 == suma_pom){
printf("%d, ", wiersz + 1);
};};
suma = 0;
w++;
}
getchar();
return 0;
}Czy tego kodu nie da się napisać prościej, używając mniej zmiennych?? Czy na pewno jest on poprawny??
Zadanie 2.
Proszę napisać algorytm, który wypełnia ,,jodełką" tablicę kwadratową o wymiarze n.
przykład: dla n równego 5, tablica ta jest postaci:
1 1 1 1 1
1 2 2 2 2
1 2 3 3 3
1 2 3 4 4
1 2 3 4 5
Mój kod jaki napisałem:
/* Jodelka */
#include <stdio.h>
int main (void)
{
int tablica[4][4]; /* n = 5 */
int wiersz, kolumna, a, x, z, w, k;
wiersz = kolumna = w = k = 0;
a = 1;
x = 5;
z = 5;
while ((w < 5)&&(k < 5)){
while(kolumna < x){
tablica[kolumna][wiersz]= a;
printf("%d ", tablica[kolumna][wiersz]);
kolumna = kolumna + 1;
};
kolumna = 0;
while(wiersz < z){
tablica[kolumna][wiersz] = a;
printf("%d ", tablica[kolumna][wiersz]);
wiersz = wiersz + 1;
};
kolumna = 0;
wiersz = 0;
w = w + 1;
k = k + 1;
x = x - 1;
z = z - 1;
a = a + 1;
};
printf("\n\n%d", tablica[0][0]);
getchar();
return 0;
}Ale to nie działa poprawnie
Programy mają być napisane w czystym C, używając tylko if, while, do while ale bez pętli for.
Z góry dziękuję za pomoc.
Pozdrawiam.
P.S Za pomoc oczywiście punkty