Clasa a VI-a lecția 10: Difference between revisions

From Algopedia
Jump to navigationJump to search
 
(No difference)

Latest revision as of 10:14, 18 December 2017

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

#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;
}

Rez

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: