<feat>: Add new program

Added new program

[New program]
master
Your Name 8 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