#1575
ParitateOJI
În vederea asigurării unei transmiteri cât mai exacte a informaţiilor pe reţea, transmiterea se efectuează caracter cu caracter, fiecare caracter fiind dat prin codul său ASCII, adică o grupă de 8
biţi (octet). Pentru fiecare 8
biţi transmişi se calculează un bit de paritate care are valoarea 0
(dacă codul ASCII al caracterului conţine un număr par de cifre binare 1
) sau 1
(în caz contrar). Deoarece în problema noastră se transmit numai caractere ASCII standard, cu codul ASCII din intervalul [32,127]
, codul lor ASCII are bitul 7
(primul bit din stânga) egal cu 0
. Pe această poziţie va fi pus bitul de paritate, economisind astfel câte un bit pentru fiecare caracter transmis.
Să se scrie un program care să verifice dacă un text a fost sau nu transmis corect.
OJI 2007, Clasa a IX-a
Problema | ParitateOJI | Operații I/O |
paritate.in /paritate.out
|
---|---|---|---|
Limita timp | 0.1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #49726170 | Utilizator | |
Fișier | paritateoji.cpp | Dimensiune | 821 B |
Data încărcării | 13 Martie 2024, 12:01 | Scor / rezultat | Eroare de compilare |
paritateoji.cpp: In function 'int main()': paritateoji.cpp:25:7: error: invalid conversion from 'char*' to 'char' [-fpermissive] cn=n; ^ paritateoji.cpp:26:35: error: no matching function for call to 'log10(char*&)' long long nrcifn=floor(log10(n))+1, exp=0; ^ paritateoji.cpp:26:35: note: candidates are: In file included from /usr/include/features.h:374:0, from /usr/include/assert.h:35, from /usr/include/c++/4.8/cassert:43, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:33, from paritateoji.cpp:1: /usr/include/i386-linux-gnu/bits/mathcalls.h:112:1: note: double log10(double) __MATHCALL (log10,, (_Mdouble_ __x)); ^ /usr/include/i386-linux-gnu/bits/mathcalls.h:112:1: note: no known conversion for argument 1 from 'char*' to 'double' In file included from /usr/include/c++/4.8/valarray:587:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:94, from paritateoji.cpp:1: /usr/include/c++/4.8/bits/valarray_after.h:454:5: note: template<class _Tp> std::_Expr<std::_UnClos<std::_Log10, std::_ValArray, _Tp>, _Tp> std::log10(const std::valarray<_Tp>&) _DEFINE_EXPR_UNARY_FUNCTION(log10, _Log10) ^ /usr/include/c++/4.8/bits/valarray_after.h:454:5: note: template argument deduction/substitution failed: paritateoji.cpp:26:35: note: mismatched types 'const std::valarray<_Tp>' and 'char*' long long nrcifn=floor(log10(n))+1, exp=0; ^ In file included from /usr/include/c++/4.8/valarray:587:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:94, from paritateoji.cpp:1: /usr/include/c++/4.8/bits/valarray_after.h:454:5: note: template<class _Dom> std::_Expr<std::_UnClos<std::_Log10, std::_Expr, _Dom>, typename _Dom::value_type> std::log10(const std::_Expr<_Dom1, typename _Dom1::value_type>&) _DEFINE_EXPR_UNARY_FUNCTION(log10, _Log10) ^ /usr/include/c++/4.8/bits/valarray_after.h:454:5: note: template argument deduction/substitution failed: paritateoji.cpp:26:35: note: mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'char*' long long nrcifn=floor(log10(n))+1, exp=0; ^ In file included from /usr/include/c++/4.8/ccomplex:38:0, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:52, from paritateoji.cpp:1: /usr/include/c++/4.8/complex:792:5: note: template<class _Tp> std::complex<_Tp> std::log10(const std::complex<_Tp>&) log10(const complex<_Tp>& __z) ^ /usr/include/c++/4.8/complex:792:5: note: template argument deduction/substitution failed: paritateoji.cpp:26:35: note: mismatched types 'const std::complex<_Tp>' and 'char*' long long nrcifn=floor(log10(n))+1, exp=0; ^ In file included from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:41:0, from paritateoji.cpp:1: /usr/include/c++/4.8/cmath:388:5: note: template<class _Tp> constexpr typename __gnu_cxx::__enable_if<std::__is_integer<_Tp>::__value, double>::__type std::log10(_Tp) log10(_Tp __x) ^ /usr/include/c++/4.8/cmath:388:5: note: template argument deduction/substitution failed: /usr/include/c++/4.8/cmath: In substitution of 'template<class _Tp> constexpr typename __gnu_cxx::__enable_if<std::__is_integer<_Tp>::__value, double>::__type std::log10(_Tp) [with _Tp = char*]': paritateoji.cpp:26:35: required from here /usr/include/c++/4.8/cmath:388:5: error: no type named '__type' in 'struct __gnu_cxx::__enable_if<false, double>' /usr/include/c++/4.8/cmath:380:3: note: constexpr long double std::log10(long double) log10(long double __x) ^ /usr/include/c++/4.8/cmath:380:3: note: no known conversion for argument 1 from 'char*' to 'long double' /usr/include/c++/4.8/cmath:376:3: note: constexpr float std::log10(float) log10(float __x) ^ /usr/include/c++/4.8/cmath:376:3: note: no known conversion for argument 1 from 'char*' to 'float' paritateoji.cpp:32:16: error: overloaded function with no contextual type information exp=0; ^ paritateoji.cpp:34:51: error: invalid conversion from 'char*' to 'long long int' [-fpermissive] ascbin[i/4]=writebites(n, ascbin[i/4], exp); ^ paritateoji.cpp:34:51: error: cannot resolve overloaded function 'exp' based on conversion to type 'long long int' paritateoji.cpp:35:12: error: no post-increment operator for type exp++; ^ paritateoji.cpp:36:10: error: invalid operands of types 'char*' and 'int' to binary 'operator/' n/=10; ^ paritateoji.cpp:36:10: error: in evaluation of 'operator/=(char*, int)'
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema ParitateOJI face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.