Author's photo
Anonymný autor
programovacie jazyky C

Programovanie v C - úloha - URGENT

Riešte problém, ktorý načíta 2 polia A a B zo súboru, porovná jednotlivé prvky poľa (i-ty prvok poľa A s i-tym prvkom poľa B), pričom ako výsledok porovnania vypíše počet zhodných čísiel na rovnakých pozíciách oboch polí, rovnako tak počet zhodne párnych a nepárnych čísiel na rovnakých pozíciách. Veľkosť polí nemusí byť rovnaká. Pri načítaní, je však orezaná dĺžkou menšieho poľa. Napr. A[3]={1,2,3}, B[4]={5,1,3,4}, budú sa teda vyhodnocovať tri prvky poľa, pričom počet rovnakých čísiel na rovnakých pozíciách je 1 (číslo 3), počet párnych čísiel na rovnakých pozíciách je 0, a počet nepárnych čísiel na rovnakých pozíciách je 2 (1. a 3. prvok).

1 odpoveď
Nejak takto to moze vyzerat:

#include <stdio.h>

int main() {
// Otvorte súbor na čítanie, uprav názov
FILE *subor = fopen("vstup.txt", "r");
if (subor == NULL) {
perror("Chyba pri otváraní súboru");
return 1;
}

/* Predpokladám formát:
A[velkost]={hodnoty}
B[velkost]={hodnoty}
ak iný, treba upraviť */

// Načítajte veľkosť poľa A
int velkostA;
fscanf(subor, "%d", &velkostA);

// Načítajte prvky poľa A
int A[velkostA];
for (int i = 0; i < velkostA; i++) {
fscanf(subor, "%d", &A[i]);
}

// Načítajte veľkosť poľa B
int velkostB;
fscanf(subor, "%d", &velkostB);

// Načítajte prvky poľa B
int B[velkostB];
for (int i = 0; i < velkostB; i++) {
fscanf(subor, "%d", &B[i]);
}

// Zatvorte súbor
fclose(subor);

// Určte menšiu veľkosť pre orezanie polí
int mensiaVelkost = (velkostA <= velkostB) ? velkostA : velkostB;

// Inicializujte premenné pre počítanie zhôd
int zhodne = 0, parne = 0, neparne = 0;

// Porovnajte prvky polí
for (int i = 0; i < mensiaVelkost; i++) {
if (A[i] == B[i]) {
zhodne++;
}

if (A[i] % 2 == 0 && B[i] % 2 == 0) {
parne++;
}

if (A[i] % 2 != 0 && B[i] % 2 != 0) {
neparne++;
}
}

// Vypíšte výsledky
printf("Pocet zhodnych cisel na rovnakych poziciach: %d\n", zhodne);
printf("Pocet parnych cisel na rovnakych poziciach: %d\n", parne);
printf("Pocet neparnych cisel na rovnakych poziciach: %d\n", neparne);

return 0;
}