<feat>: Add new program

Added new program

[New program]
master
Your Name 10 months ago
parent fae8efe512
commit 9a2b004dff
  1. 23
      2.10.txt
  2. 38
      2.6.txt
  3. 34
      2.7.txt
  4. 19
      3.1.txt
  5. 65
      3.2.txt
  6. 46
      3.4.txt
  7. 38
      3.5.txt

@ -0,0 +1,23 @@
#include <stdio.h>
int lower(int c);
int main()
{
int i;
char s[] = "DEERTGAD UIOG\0";
printf("s = %s\n", s);
printf("lower s = ");
for (i = 0; s[i] != '\0'; i++)
printf("%c", lower(s[i]));
printf("\n");
return 0;
}
/* lower: преобразование прописных c в строчные, только для ASCII */
int lower(int c)
{
return (c >= 'A' && c <='Z') ? c +'a'-'A' : c;

@ -0,0 +1,38 @@
#include <stdio.h>
unsigned setbits(unsigned x, int p, int n, unsigned y);
void printfbit(unsigned n);
int main()
{
printf("76543210\n\n");
unsigned c1 = 'f';
printfbit(c1);
unsigned c2 = 'z';
printfbit(c2);
printfbit(setbits(c1, 5, 3, c2));
return 0;
}
/* setbits: x получает n правых бит из y, начиная с p-й позиции */
unsigned setbits(unsigned x, int p, int n, unsigned y)
{
return ( (~0 << (p+1)) & x ) | ( ~(~0 << (p+1-n)) & x ) |
(~(~0 << n) & y) << (p+1-n);
}
void printfbit(unsigned n)
{
for(int i = 7; i >= 0; i--)
{
if(n & (1 << i))
putchar('1');
else
putchar('0');
}
putchar('\n');
}

@ -0,0 +1,34 @@
#include <stdio.h>
unsigned invert(unsigned x, int p, int n);
void printfbit(unsigned n);
int main()
{
printf("76543210\n\n");
unsigned c = 'f';
printfbit(c);
printfbit(invert(c, 5, 3));
return 0;
}
/* invert: инвертирует n бит из x, начиная с p-й позиции */
unsigned invert(unsigned x, int p, int n)
{
return x ^ (~(~0 << n) << (p+1-n));
}
void printfbit(unsigned n)
{
for(int i = 7; i >= 0; i--)
{
if(n & (1 << i))
putchar('1');
else
putchar('0');
}
putchar('\n');
}

@ -0,0 +1,19 @@
/* binsearch: найти х в v[0] <= v[1] <= … <= v[n-1] */
int main(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n - 1 ;
while (low <= high && x != v[mid]) {
mid = (low + high) / 2;
if (x < v[mid])
high = mid - 1;
else
low = mid + 1;
mid = (low + high) / 2; \
}
if ( x == v[mid])
return mid;
else
return -1; /* совпадения нет */
}

@ -0,0 +1,65 @@
#include <stdio.h>
#define MAXLEN 30
void escape(char s[], char t[]);
void unescape(char s[], char t[]);
int main()
{
char input[MAXLEN] = "bla\tbla\nbla\n";
char output[MAXLEN];
printf("Original = %s\n", input);
escape(output, input);
printf("Escaped = %s\n", output);
unescape(input, output);
printf("Unescaped = %s\n", input);
printf("The End\n");
return 0;
}
void escape(char s[], char t[])
{
int i, j;
for (i = 0, j = 0; s[i]; i++, j++)
switch (t[i]) {
case '\t':
s[j++] = ' ';
s[j] = 't';
break;
case '\n':
s[j++] = ' ';
s[j] = 'n';
break;
default:
s[j] = t[i];
break;
}
s[j] = t[i]; // \0 !
}
void unescape(char s[], char t[])
{
int i, j;
for (i = 0, j = 0; s[i]; i++, j++)
switch (t[i]) {
case ' ':
switch (t[++i]) {
case 't':
s[j] = '\t';
break;
case 'n':
s[j] = '\n';
break;
}
break;
default:
s[j] = t[i];
break;
}
s[j] = t[i];
}

@ -0,0 +1,46 @@
#include <stdio.h>
#include <string.h>
#include <limits.h>
void itoa(int n, char s[]);
void reverse(char s[]);
int main(void) {
char buffer[20];
int i = 35;
printf("Number: %d\n", i);
itoa(i, buffer);
printf("Buffer : %s\n", buffer);
printf("INT_MIN: %d\n", INT_MIN);
itoa(INT_MIN, buffer);
printf("Buffer : %s\n", buffer);
return 0;
}
/* itoa: преобразование n в строку s */
void itoa(int n, char s[]) {
int i, sign;
sign = n; /* сохраняем знак */
i = 0;
do { /* генерируем цифры в обратном порядке */
s[i++] = abs(n % 10) + '0'; /* следующая цифра */
} while ( n /= 10 ); /* исключить ее */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
void reverse(char s[]) {
int c, i, j;
for ( i = 0, j = strlen(s)-1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}

@ -0,0 +1,38 @@
#include <stdio.h>
#include <string.h>
#include <math.h>
int convert_base(char *p, int b, int s);
int main() {
char p[] = "111";
int b = 10;
int s = 8;
int result = convert_base(p, b, s);
printf("Converted number: %d\n", result);
return 0;
}
// Функция для конвертации числа из одного основания в другое
int convert_base(char *p, int b, int s) {
int decimal = 0;
int len = strlen(p);
// Преобразование числа в десятичную систему счисления
for (int i = 0; i < len; i++) {
decimal += (p[i] - '0') * pow(b, len - i - 1);
}
// Преобразование десятичного числа в нужное основание
int result = 0;
int index = 0;
while (decimal > 0) {
result += (decimal % s) * pow(10, index);
decimal /= s;
index++;
}
return result;
}
Loading…
Cancel
Save