Clasa a VI-a lecția 10
From Algopedia
Jump to navigationJump to search
Corectare Tema
- Am corectat problema Praslea; am recapitulat tipurile de date : int, short int, long long; Nu se stia ca 4 miliarde nu e int. Am facut studiu de complexitate pe doua metode de rezolvare. Metodele derivau din structura de date care retinea parcelele. O metota retinea un vector cu dimensiunile tuturor celor 500000 parcele, a doua retinea cele m parcele, intr-un vector de perechi "Lungime, nr parcela";
Concurs C4_6
- paritate Cerc informatică Vianu
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fin = fopen ("paritate.in", "r");
FILE *fout = fopen ("paritate.out", "w");
unsigned char c, c1, v[60000];
int cod, i, n, p2, corect, biti1, ok;
n = 0;
c1 = fgetc( fin );
ok = 1;
while ( c1 != '\n' && c1 != 'EOF'){
corect = 1; //pp ca paritatea e corect
biti1 = 0; //numara bitii de 1 din urmatorii 7 biti
p2 = 64 ; //codul fiind pe 7 biti, prima putere din desc in baza 2 este 2^6
cod = 0;
//citim pe rand cei 7 biti
for ( i = 0; i< 7; ++i){
c = fgetc( fin );
if ( c == '1')
biti1++;
cod += ( c - '0') * p2;
p2 = p2 >> 1; // p = p / 2;
}
//verific corectitudinea paritatii
if( ( biti1 & 1 ) ^ ( c1 -'0' ) ){ //paritatea nr de biti tre sa fie la fel cu c1
corect = 0;
ok = 0;
v[n++] = cod + 128; //punem cod primul bit 1; atentie cod tre sa fie unsigned char
}
else
v[n++] = cod; //memoram caracterul
c1 = fgetc ( fin );
}
if ( ok ){
fprintf( fout, "DA\n");
for (i = 0; i< n ; i++)
fputc( v[i] , fout );
}
else{
fprintf( fout, "NU\n");
for (i = 0; i < n ; i++)
if( v[i] >= 128 )
fprintf( fout, "%d ", i);
}
fclose( fin );
fclose( fout );
return 0;
}
Lectie
Parcurgere circulara - Probleme ONI
- Am discutat problemele de la ONI, in care folosim parcurgerea circulara a unui vector:
- numar1; - am explicat parcurgerea circulara spre stanga si spre dreapta, legatura dintre paritate si directie; nu s-a reusit implementarea intr-o ora; Ne-am impotmolit la parcurgerea circulara in sens invers (A) sau in cod incalcit ( T )
- numar; am discutat metoda de rezolvare si am explicat un detaliu de implmentare: modalitatea de trecere prin valorile 0, 1, -1, 2, -2, etc
Tema
Rezolvati in aceasta ordine problemele:
Optional: