Informatică, întrebare adresată de TDRBOSS, 9 ani în urmă

Concurs (clasa a 5-a)

Notă: rezolvaţi această problemă fără a folosi tablouri (vectori).

La un concurs de matematică participă elevi din mai multe şcoli din diferite oraşe. Pentru a se putea deosebi între ele lucrările lor, fiecare lucrare este codificată printr-un număr natural cu 3 cifre, să zicem abc, unde a (cifra sutelor) este codul oraşului, b (cifra zecilor) este codul şcolii din oraşul a, iar c (cifra unităţilor) este codul unui elev din şcoala b din oraşul a. Exemplu: lucrarea cu codul 328 este lucrarea elevului cu codul 8 de la şcoala cu codul 2 din oraşul cu codul 3.
Se cunosc: un cod (al lucrării unui elev H, prietenul nostru), numărul n de lucrări premiate şi codurile acestora.
Cerinţă

Se cere să se rezolve cerinţele:
a) Verificaţi dacă H este premiant, sau nu.
b) Determinaţi numărul de premii luate de elevii din oraşul lui H (inclusiv H, dacă a fost premiat).
c) Determinaţi numărul de premii luate de elevii din şcoala lui H (inclusiv H, dacă a fost premiat).
Date de intrare

De pe prima linie a fişierului de intrare concurs.in se citeşte codul lui H; de pe linia a doua fişierului se citeşte valoarea n, iar de pe linia a treia se citesc cele n coduri premiate. Codurile premiate sunt separate prin câte un spaţiu.
Date de ieşire

Cele 3 răspunsuri se vor afişa în fişierul de ieşire concurs.out, pe câte o linie. Pentru prima cerinţă se va afişa pe prima linie a fişierului un mesaj (DA sau NU), după cum H a luat, sau nu a luat premiu. La cerinţele b) şi c) se va scrie câte un număr pe linia a doua respectiv pe linia a treia a fişierului de ieşire.
Restricţii

n este un număr natural nenul, n ≤ 20
Codul de oraş (cifra sutelor din fiecare cod) este de la 1 la 5, inclusiv.
Codurile şcolilor din fiecare oraş (cifra zecilor) este de la 0 la 9, inclusiv.
Codul elevilor (cifra unităţilor) este tot de la 0 la 9 inclusiv.
Mesajul DA/NU se va afişa cu majuscule.
Se acordă 30% din punctaj pentru prima cerinţă rezolvată corect, 70% din punctaj pentru primele două cerinţe rezolvate corect şi punctajul integral pentru toate cele 3 cerinţe rezolvate corect.

Răspunsuri la întrebare

Răspuns de yusy
1
#include <stdio.h>
int main() {  FILE *fin, *fout;  fin = fopen("concurs.in", "r");  fout = fopen("concurs.out", "w");  int i, n, o, s, h, x, ok;  fscanf(fin, "%d%d", &h, &n);  o = 0;  s = 0;  ok = 0;  for (i = 0; i < n; i++) {    fscanf(fin, "%d", &x);    if (h == x && ok == 0) {      fprintf(fout, "DA\n");      ok = 1;    }    if (x / 100 == h / 100) {      o++;      if (x / 10 == h / 10)        s++;    }  }  if (ok == 0)    fprintf(fout, "NU\n");  fprintf(fout, "%d\n%d", o, s);  fclose(fin);  fclose(fout);  return 0;}
Alte întrebări interesante