1

Тема: Задачи на C#

Задача 1.9.
    Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр.

#include <conio.h>
#include <stdio.h>

void main()
{
clrscr();
int n = 0;
printf("Введи N = ");
scanf("%d", &n); fflush(stdin);

for (int i=1; i<=n; i++)
{
  int m = i;
  int k = 0, s = 0, b = 0;
  while (m>0)
  {
   s = m % 10;
   m = m / 10;
   k++;
   if (s!=0) if (i%s==0) b++;
  }
  if (b==k&&b!=0) printf("%5d", i);
}
}

Поделиться

2

Re: Задачи на C#

Задача 1.23.
    Cформировать новый массив из тех элементов которые являются квадратами своих  номеров.

#include <conio.h>
#include <stdio.h>
#include <math.h>

void main()
{
 clrscr();
 int a[10];
 for (int i=0; i<10; i++)
 {
  a[i] = pow(i, 2);
  printf("%d, ", a[i]);
 }
}

Поделиться

3

Re: Задачи на C#

Задача 2.9.
    Дана строка. Определить, сколько раз входит в нее группа букв abc.

#include <conio.h>
#include <stdio.h>
#include <string.h>

void main()
{
 clrscr();
 char *st = "lai lai abc lai irewek abc";
 char b[3]= "abc";
 char c[3]= "   ";

 int len = strlen(st);
 int k = 0;
 for (int i=0; i<(len-2); i++)
  {
   for (int l=0; l<3; l++) c[l]=st[l+i];
   int d=0;
   for (int u=0; u<3; u++) if (b[u]==c[u]) d++;
   if (d == 3) k++;
  }
 printf("Количество слов 'abc' в предложении '%s' = %d", st, k);
}

Поделиться

4

Re: Задачи на C#

Задача 2.39.
    Дана строка, содержащая текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.

#include <conio.h>
#include <stdio.h>
#include <string.h>

void main()
{
 clrscr();
 char *st = "Дневник забыл на урок взять. Пришёл на урок пьяный.";
 char b[4]= "урок";
 char c[4]= "    ";

 int len = strlen(st);
 int k = 0;
 for (int i=0; i<(len-2); i++)
  {
   for (int l=0; l<3; l++) c[l]=st[l+i];
   int d=0;
   for (int u=0; u<3; u++) if (b[u]==c[u]) d++;
   if (d == 3) k++;
  }
 printf("Количество слов 'урок' в предложении '%s' = %d", st, k);
}

Поделиться

5

Re: Задачи на C#

Задача 3.11.
    Составить свою функцию поиска подстроки в строке текста, получающую указатель на строку и указатель на подстроку. Если подстрока не найдена ввести другую и продолжить поиск. Если же найдена - вернуть в основную программу ее начальную позицию в строке.

#include <conio.h>
#include <stdio.h>
#include <string.h>

int findk(char *st1, char *st2)
{
 int len1 = strlen(st1);
 int len2 = strlen(st2);
 int j = 0, k=0;
 for (int i=0; i<(len1-len2+1); i++)
 {
  j=0;
  for (int l=0; l<len2; l++)
   if (st1[i+l]==st2[l]) j++;
  if (j==len2) {k=i; break;}
 }
 if (k!=0) return k; else return -1;
}

void main()
{
 clrscr();
 char *st = "lai lai abc lai irewek abc";
 char *b = "abc";
 int d = -1;
 while (d < 0)
 {
  printf("Введи слово для поиска: ");
  scanf("%s", b); fflush(stdin);
  d = findk(st, b);
 }
 printf("Слово '%s' в строке '%s' на %d позиции.", b, st, d);
}

Поделиться

6

Re: Задачи на C#

Задача 3.23.
    Дан текст, удалить все слова на английском языке.

#include <conio.h>
#include <stdio.h>
#include <string.h>

void main()
{
 clrscr();
 char *st = "lai lai abc lai irewek abc";
 int len = strlen(st);
 for (int i=0; i<len; i++)
 {
  if (st[i]>'A'&&st['Z']) st[i]=' ';
  if (st[i]>'a'&&st['z']) st[i]=' ';
 }
 printf("%s", st);
}

Поделиться

7

Re: Задачи на C#

Структура «Фильм»:        Задания 1, 2, 3, 7, 8   
-    название;
-    режиссер (фамилия, имя, отчество);
-    страна;
-    год выпуска;
-    стоимость;
       -      доход.

Задания к структурам.

1.    Задать с клавиатуры размер массива структур.
2.    Написать функцию для формирования одномерного массива структур, значения которых вводятся с клавиатуры.
3.    Написать функцию вывода форматированной таблицы структур на экран с шапкой.
4.    Написать функцию дополнения уже существующего массива структур новыми структурами.
5.    Написать функцию поиска структуры с заданным значением выбранного элемента.
6.    Написать функцию постраничного вывода на экран содержимого массива структур.
7.    Написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента).
8.    Написать функцию упорядочения массива структур по заданному полю (элементу).

#include <conio.h>
#include <stdio.h>
#include <string.h>

struct SFilm {
 char Art[20];
 char FIO[35];
 char Country[10];
 char Year[4];
 char Price[8];
 char Vol[8];
 SFilm *Next;
 SFilm *Prior;
};

SFilm *Film, *Start, *End;

int SizeOfFilms = 0;

void FillFilms();
void PrintFilms();
void Find(char find[20]);
void Sort();

void main()
{
 Film = Start = End = NULL;
 clrscr();
 printf("Введи количество записей: ");
 scanf("%d", &SizeOfFilms);
 Film = new SFilm;
 Start = Film;
 End = Film;
 FillFilms();
 clrscr();
 PrintFilms();
 printf("\n\nВведи название фильма для поиска: ");
 char findf[15];
 scanf("%15s", &findf);
 Find(findf);
 Sort();
}

void FillFilms()
{
 Film = Start;
 for (int i=0; i<SizeOfStructFilm; i++)
 {
  printf("[%d] Название: ", i);
  scanf ("%20s", &Film->Art); fflush(stdin);
  printf("[%d] Режиссёр: ", i);
  scanf ("%35s", &Film->FIO); fflush(stdin);
  printf("[%d] Страна: ", i);
  scanf ("%10s", &Film->Country); fflush(stdin);
  printf("[%d] Год выпуска: ", i);
  scanf ("%4s", &Film->Year); fflush(stdin);
  printf("[%d] Стоимость: ", i);
  scanf ("%8s", &Film->Price); fflush(stdin);
  printf("[%d] Доход: ", i);
  scanf ("%8s", &Film->Vol); fflush(stdin);
  printf("\n");
  SFilm *temp = new SFilm;
  temp->Next = NULL;
  temp->Prior = Film;
  Film->Next = temp;
  Film->Prior = Start;
  Film = temp;
 }
}

void PrintFilms()
{
 printf("+--------------------+-----------------------------------+----------+----+--------+--------+");
 printf("|      Название      |              Режиссёр             | Отчество | Год|  Стоимость|  Доход |");
 printf("+--------------------+-----------------------------------+----------+----+--------+--------+");
 Film = Start;
 for (int i=0; i<SizeOfStructFilm; i++)
 {
  printf("|%20s|%35s|%10s|%4s|%8s|%8s|", Film->Art, Film->FIO, Film->Country, Film->Year, Film->Price, Film->Vol);
  Film = Film->Next;
 }
 printf("+--------------------+-----------------------------------+----------+----+--------+--------+");
}

void Find (char find[15])
{
 printf("+--------------------+-----------------------------------+----------+----+--------+--------+");
 printf("|      Название      |              Режиссёр             | Отчество | Год|  Стоимость|  Доход |");
 printf("+--------------------+-----------------------------------+----------+----+--------+--------+");
 Film = Start;
 for (int i=0; i<SizeOfStructFilm; i++)
 {
  int yes = 0;
  for (int j=0; j<strlen(find); j++) if (find[j] == Film->Family[j]) yes++;
  if (yes == strlen(find))
  printf("|%20s|%35s|%10s|%4s|%8s|%8s|", Film->Art, Film->FIO, Film->Country, Film->Year, Film->Price, Film->Vol);
  Film = Film->Next;
 }
 printf("+--------------------+-----------------------------------+----------+----+--------+--------+");
}

void Sort()
{
 SFilm *temp = Start;
 for (int i=0; i<SizeOfStructFilm; i++)
  for (int j=i; j<SizeOfStructFilm; j++)
  {
   temp = Film->Prior;
   if (Film->Art[1]<temp->Art[1])
   {
    Film->Next = temp->Next;
    Film->Prior = temp->Prior;
    Film = temp;
   }
  }
 PrintFilms();
}

Поделиться

8

Re: Задачи на C#

Задача 5.3.
    По номеру  задания  из темы 4  в своем задании  организовать: Вставку нового узла в начало  списка.

void AddFilm()
{
 SFilm *temp = Start;
 Film->Prior = temp;
 temp->Next = Film;
 Film = temp;
}

Задача 5.4.
    По номеру  задания  из темы 4  в своем задании  организовать: Удаление узла   с конца списка.

void DelFilmEnd()
{
 SFilm *temp = End;
 End = temp->Prior;
 End->Next = NULL;
 delete temp;
}

Поделиться

9

Re: Задачи на C#

Задача 6.9.
    Дан символьный файл, содержащий информацию в виде:  фамилия_имя_отчество. Записать эту  информацию  в  другой  символьный файл в виде: фамилия_и.о.

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
 clrscr();
 int k;
 char s[100], b[100];
 FILE *f, *f2;
 f = fopen("D:\\BORLANDC\\OUT\\fio1.txt", "r");
 f2 = fopen("D:\\BORLANDC\\OUT\\fio2.txt", "w");
 while(!feof(f))
 {
  int i=0;
  for (i=0; i<100; i++) {b[i]=0; s[i]=0;}
  fgets(s, 80, f);
  int len = strlen(s);
  for (k=0; k<len; k++)
   { b[k]=s[k]; if (s[k]==' ') break;}
  b[k]=' '; b[k+1]=s[k+1]; b[k+2]='.'; k+=2;

  for (i=k; i<len; i++) if (s[i]==' ') break;
  b[k+1]=s[i+1]; b[k+2]='.';

  fputs(b, f2); fputc ('\n', f2);
 }
 fclose(f);
 fclose(f2);
}

Поделиться

10

Re: Задачи на C#

Задача 6.33.
    Написать программу, которая считывает  текст из файла и выводит на экран все его предложения.

#include <stdio.h>
#include <conio.h>
#include <string.h>

void main()
{
 clrscr();
 int k;
 char s[100];
 FILE *f, *f2;
 f = fopen("D:\\BORLANDC\\OUT\\fio1.txt", "r");
 while(!feof(f))
 {
  int i=0;
  for (i=0; i<100; i++) {s[i]=0;}
  fgets(s, 80, f);
  int len = strlen(s);
  for (k=0; k<len; k++)
   {printf("%c", s[k]);
    if (s[k]=='.') printf("\n"); }
 }
 fclose(f);
}

Поделиться

11

Re: Задачи на C#

Задача 1.6.
    Составить функцию для нахождения наименьшего нечетного натурального делителя k (k ≠ 1) любого заданного натурального числа n.

#include <conio.h>
#include <stdio.h>

int findk(int m)
{
 int res = m;
 for (int l=m; l>3; l--)
  if ((l%2!=0)&&(m%l==0)) res = l;
 if (res==m && res%2==0) res = 0;
 return res;
}

void main()
{
 clrscr();
 int n = 0;
 printf("Введи n = ");
 scanf("%d", &n);
 int k = findk(n);
 if (k!=0) printf("Наименьший нечётный натуральный делитель числа %d = %d", n, k);
 else printf("У числа %d нет наименьшего нечётного натурального делителя.", k);
 getch();
}

Поделиться

12

Re: Задачи на C#

Задача 1.15.
    Сформировать  новый одномерный массив из НОД каждых трех элементов  массива A.

#include <conio.h>
#include <stdio.h>

void main()
{
 int a[]={8, 74, 63, 9, 3};
 int b[5];
 int n = 0, i = 0;
 clrscr();
 for (i=0; i<5; i++) printf("%5d", a[i]);
 printf("\n");
 for (i=0; i<3; i++)
 {
  int max = a[i];
  if (a[i+1]>max) max = a[i+1];
  if (a[i+2]>max) max = a[i+2];
  for (int l=1; l<=max; l++)
   if ((a[i]%l==0)&&(a[i+1]%l==0)&&(a[i+2]%l==0)) n = l;
  b[i]=n;
  printf("NOD %d, %d, %d = %d\n", a[i], a[i+1], a[i+2], n);
 }
}

Поделиться

13

Re: Задачи на C#

Задача 2.30.
    Строка содержит произвольный русский текст. Проверить, каких букв в нем больше: гласных или согласных.

#include <conio.h>
#include <stdio.h>
#include <string.h>

void main()
{
 clrscr();
 char ea[]={'A', 'Е', 'Ё', 'И', 'О', 'У', 'Ы', 'Э', 'Ю', 'Я'};
 char eb[]={'Б', 'В', 'Г', 'Д', 'Ж', 'З', 'Й', 'К', 'Л', 'М', 'Н', 'П', 'Р', 'С', 'Т', 'Ф', 'Ч', 'Ц', 'Ч', 'Ш', 'Щ'};
 char *st="ДЕТИ ИДУТ В ШКОЛУ.";
 int ka=0, kb=0;
 int len = strlen(st);
 for (int i=0; i<len; i++)
 {
   for (int l=0; l<10; l++) if (st[i]==ea[l]) ka++;
   for (l=0; l<21; l++) if (st[i]==eb[l]) kb++;
 }
 if (ka>kb) printf("Гласных букв больше!"); else printf("Гласных не больше, чем согласных!");
}

Поделиться

14

Re: Задачи на C#

Задача 2.59.
    Дана строка. Напечатать в алфавитном порядке все слова из данной строки, имеющие заданную длину n.

#include <conio.h>
#include <stdio.h>
#include <string.h>

void main()
{
 clrscr();
 char *st="мама дети идут в школу";
 int n = 4;
 int m[100], b=0;
 char mc[100];
 int len = strlen(st);
 int x=0;
 for (int i=0; i<len; i++)
 {
   switch (x)
   {
   case 0: mc[b]=st[i];
       m[b]=i;
       b++; x++;
       break;
   case 1: if (st[i]==' ') x=0;
       break;
   }
 }
  for (i=0; i<(b-1); i++)
   for (int l=i; l<(b-1); l++) if (mc[l]<mc[l+1])
   {
    char c = mc[l]; int j = m[l];
    mc[l] = mc[l+1]; m[l] = m[l+1];
    mc[l+1] = c; m[l+1] = j;
   }
 for (int y=0; y<b; y++)
 {
  char z[4];
  int s=0;
  for (i=m[y]; i<len; i++)
  { z[i-y]=st[i]; if (st[i]==' ') break; s++; }
  if (s == n) printf("%s\n", z);
 }
}

Поделиться

15

Re: Задачи на C#

Задача 3.9.
    В программе вводятся по очереди символьные строки, содержащие буквы и цифры и передаются в функцию. В функции сформировать новую строку, состоящую только из цифр. Распечатать эту строку в основной программе. Конец ввода строк это ввод нулевой строки.

#include <conio.h>
#include <stdio.h>
#include <string.h>

void stnum(char *st1)
{
 char *res="";
 int len=strlen(st1);
 for (int i=0; i<len; i++)
  if ((st1[i]>='0')&&(st1[i]<='9')) res += st1[i];
 *st1 = *(res);
}

void main()
{
 clrscr();
 char *st;
 do {
  printf("Введи строку: ");
  scanf("%s", st);
  stnum(st);
  printf("%s\n", st);
 } while (strlen(st)!=0);
}

Поделиться

16

Re: Задачи на C#

Задача 3.23.
    Дан текст, удалить все слова на английском языке.

#include <conio.h>
#include <stdio.h>
#include <string.h>

void main()
{
 clrscr();
 char *st = "lai lai abc lai irewek abc";
 int len = strlen(st);
 for (int i=0; i<len; i++)
 {
  if (st[i]>'A'&&st['Z']) st[i]=' ';
  if (st[i]>'a'&&st['z']) st[i]=' ';
 }
 printf("%s", st);
}

Поделиться

17

Re: Задачи на C#

Задача 4.15.
Cтруктура «Отдел кадров»  Задания 1, 2, 3, 4, 5, 7.
- Ф.И.О.
- адрес
- стаж
- должность
- зарплата

Задания к структурам.

1.    Задать с клавиатуры размер массива структур.
2.    Написать функцию для формирования одномерного массива структур, значения которых вводятся с клавиатуры.
3.    Написать функцию вывода форматированной таблицы структур на экран с шапкой.
4.    Написать функцию дополнения уже существующего массива структур новыми структурами.
5.    Написать функцию поиска структуры с заданным значением выбранного элемента.
6.    Написать функцию постраничного вывода на экран содержимого массива структур.
7.    Написать функцию поиска структур с заданными признаками (например, по заданному диапазону значений элемента).
8.    Написать функцию упорядочения массива структур по заданному полю (элементу).

#include <conio.h>
#include <stdio.h>
#include <string.h>

struct SKadr {
 char FIO[35];
 char Adres[20];
 char Old[4];
 char Post[8];
 char Cost[8];
 SKadr *Next;
 SKadr *Prior;
};

SKadr *Kadr, *Start, *End;

int SizeOfKadrs = 0;

void FillKadrs();
void PrintKadrs();
void Find(char find[20]);
void Sort();

void main()
{
 Kadr = Start = End = NULL;
 clrscr();
 printf("Введи количество записей: ");
 scanf("%d", &SizeOfKadrs);
 Kadr = new SKadr;
 Start = Kadr;
 End = Kadr;
 FillKadrs();
 clrscr();
 PrintKadrs();
 printf("\n\nВведи Ф.И.О. для поиска: ");
 char findf[15];
 scanf("%15s", &findf);
 Find(findf);
 Sort();
}

void FillKadrs()
{
 Kadr = Start;
 for (int i=0; i<SizeOfStructKadr; i++)
 {
  printf("[%d] Ф.И.О.: ", i);
  scanf ("%35s", &Kadr->FIO); fflush(stdin);
  printf("[%d] Адрес: ", i);
  scanf ("%20s", &Kadr->Adres); fflush(stdin);
  printf("[%d] Стаж: ", i);
  scanf ("%4s", &Kadr->Old); fflush(stdin);
  printf("[%d] Должность: ", i);
  scanf ("%8s", &Kadr->Post); fflush(stdin);
  printf("[%d] Оклад: ", i);
  scanf ("%8s", &Kadr->Cost); fflush(stdin);
  printf("\n");
  SKadr *temp = new SKadr;
  temp->Next = NULL;
  temp->Prior = Kadr;
  Kadr->Next = temp;
  Kadr->Prior = Start;
  Kadr = temp;
 }
}

void PrintKadrs()
{
 printf("+-----------------------------------+--------------------+----+--------+--------+");
 printf("|               Ф.И.О.              |      Адрес         |Стаж| Должность |  Оклад |");
 printf("+-----------------------------------+--------------------+----+--------+--------+");
 Kadr = Start;
 for (int i=0; i<SizeOfStructKadr; i++)
 {
  printf("|%35s|%20s|%4s|%8s|%8s|", Kadr->FIO, Kadr->Adres, Kadr->Old, Kadr->Post, Kadr->Cost);
  Kadr = Kadr->Next;
 }
 printf("+-----------------------------------+--------------------+----+--------+--------+");
}

void Find (char find[15])
{
 printf("+-----------------------------------+--------------------+----+--------+--------+");
 printf("|               Ф.И.О.              |      Адрес         |Стаж| Должность |  Оклад |");
 printf("+-----------------------------------+--------------------+----+--------+--------+");
 Kadr = Start;
 for (int i=0; i<SizeOfStructKadr; i++)
 {
  int yes = 0;
  for (int j=0; j<strlen(find); j++) if (find[j] == Kadr->FIO[j]) yes++;
  if (yes == strlen(find))
  printf("|%35s|%20s|%4s|%8s|%8s|", Kadr->FIO, Kadr->Adres, Kadr->Old, Kadr->Post, Kadr->Cost);
  Kadr = Kadr->Next;
 }
 printf("+-----------------------------------+--------------------+----+--------+--------+");
}

void Sort()
{
 SKadr *temp = Start;
 for (int i=0; i<SizeOfStructKadr; i++)
  for (int j=i; j<SizeOfStructKadr; j++)
  {
   temp = Kadr->Prior;
   if (Kadr->Art[1]<temp->Art[1])
   {
    Kadr->Next = temp->Next;
    Kadr->Prior = temp->Prior;
    Kadr = temp;
   }
  }
 PrintKadrs();
}

Поделиться

18

Re: Задачи на C#

Задача 5.4.
    По номеру  задания  из темы 4  в своем задании  организовать: Удаление узла   с конца списка.

void DelKadrEnd()
{
 SKadr *temp = End;
 End = temp->Prior;
 End->Next = NULL;
 delete temp;
}

Поделиться

19

Re: Задачи на C#

Задача 6.1.
    Дан текстовый файл, содержащий вещественные числа.  Определить сумму всех этих чисел и записать ее в конце файла.

#include <conio.h>
#include <stdio.h>
#include <fstream.h>

void main()
{
 clrscr();
 float sum=0, n=0;
 FILE *f;
 f=fopen("D:\\BORLANDC\\t.txt", "r");
 while (!feof(f))
 {
  fscanf(f, "%f", &n);
  sum += n;
 }
 fclose(f);
 fopen("D:\\BORLANDC\\t.txt", "a");
 fprintf(f, "\n%f", sum);
 fclose(f);
}

Поделиться

20

Re: Задачи на C#

Задача 6.30.
    Написать программу, которая считывает текст из файла, находит самое длинное слово и определяет, сколько раз оно встретилось в тексте.

#include <conio.h>
#include <stdio.h>
#include <fstream.h>
#include <string.h>

void main()
{
 clrscr();
 int sum=0, len=0, maxlen=0;
 char *st="";
 FILE *f;
 f=fopen("f.txt", "r");
 while (!feof(f))
 {
  fscanf(f, "%s", st);
  len = strlen(st);
  if (len==maxlen) sum++;
  if (maxlen<len) {maxlen=len; sum=1;}
 }
 fclose(f);
 printf("Самое длинное слово %d символов, встречается %d раз.", maxlen, sum);
}

Поделиться