Программирование на языках высокого уровня. Много задач на IT форуме.
Задачи на C# Программы на языке C#
Дан текст удалить из текста все предложения, содержащие менее 4 слов и вывести новый текст.
#include <stdio.h>
#include <string.h>
int predl(char *st)
{
int n=1, l=strlen(st);
for (int i=0; i<(l-1); i++) if (st[i]==’ ‘ && st[i+1]!=’ ‘) n++;
return n;
}
void main ()
{
char s[10][255];
for (int i=0; i<10; i++)
{
printf(«Введи %d строку: «, i);
scanf(«%s», s[i]); fflush(stdin);
}
for (int i=0; i<10; i++)
if (predl(&s[i][0])<4) for (int j=i+1; j<10; j++) strcpy(s[j], s[j-1]);
for (int i=0; i<10; i++) printf(«%s\n», s[i]);
}
ФУНКЦИИ:
11) Написать программу разложения числа А(A<106) на простые делители, подсчитывая, сколько раз встречается один и тот же простой делитель, а также вычислить сумму этих делителей.
#include <conio.h>
#include <stdio.h>
#include <math.h>
int summ(int n)
{
int sum = 0;
int m[1000][2], a=0;
int n1 = n;
for (int i=1; i<=n1; i++)
{
if (n1%i == 0)
{
int k = 0;
for (int k1=2; k1<i; k1++) if (i%k1 == 0) {k++;}
if (k == 0 && i != 1) {
sum += i;
m[a][0] = i;
m[a][1] = 1;
printf(«=== [%d] n = %4d k = %4d\n», a, m[a][0], m[a][1]);
printf(«=== [%d / %d] = %d\n», n1, i, n1/i);
for (int l=0; l<a; l++) if (m[l][0] == i) {m[l][1] = m[l][1] + 1;}
a++;
n1 = n1 / i;
i = 1;
}
}
printf(«\n»);
for (int j=0; j<a; j++)
{
printf(«[%d] n = %4d k = %4d\n», j, m[j][0], m[j][1]);
}
return sum;
}
void main()
{
int n = 0;
clrscr();
printf(«Введи число: «);
scanf(«%d», &n);
if (n < pow(10, 6))
{
printf(«Сумма = %d», summ( n ));
} else {printf(«Введённое число больше 10^6\n»);}
}
23) сформировать новый массив из тех элементов которые являются квадратами своих номеров.
#include <conio.h>
#include <stdio.h>
#include <math.h>
int kvadrat(int a)
{
for (int i=0; i<n; i++)
if (a[i]==i*i) return a[i]; else return 0;
}
void main()
{
clrscr();
int a[100], b[100];
for(int i = 0; i < 100; i++)
{
a[i] = rand();
printf («%d», a[i]);
}
int bi=0;
for (i=0; i<100; i++) if (kvadrat(a[i])>0)
{
b[bi] = kvadrat(a[i]);
printf(“%d”, b[bi]);
bi++;
}
getch();
}
СТРОКИ:
23) Дана строка из n символов. Преобразовать ее, заменив все двоеточия (:), встречающиеся среди первых n/2 символов, и заменив точками все восклицательные знаки, встречающиеся среди символов, стоящих после n/2 символов.
#include <conio.h>
#include <stdio.h>
#include <string.h>
void main()
{
Char *a ;
printf («Введите строку: «) ;
scanf («%s»,a) ;
int n=strlen (a) ;
for (i=0; i<n; i++)
{
if (int i<=n/2) && (a[i] == ‘:’) a[i] = ’ ’ ;
if (i>=n/2) && (a[i] == ‘!’) a[i] = ’.’ ;
}
printf(«%s»,a) ;
}
2)Дана строка, содержащая текст, включающий русские и английские слова. Подсчитать, каких букв в тексте больше — русских или латинских.
#include <conio.h>
#include <stdio.h>
#include <string.h>
void main()
{
char *a ;
printf («введите строку: «) ;
scanf («%s»,a) ;
int R=0, L=0;
for (int i=0; i< strlen (a); i++)
{
if (a[i]>=’A’) && (a[i] < =’Z’) L++;
if (a[i]>=’А’) && (a[i] < =’Я’) R++;
}
if (R>L)
printf («русских букв больше»);
else
printf («латинских букв больше»);
}
МАССИВЫ СТРОК:
- В программе вводятся по очереди символьные строки. Количество букв ‘а’ в этих строках подсчитывается в функции, и это число возвращается в основную программу. Конец ввода строк это ввод нулевой строки.
#include <conio.h>
#include <stdio.h>
#include <string.h>
int func (char *a)
{
int k=0;
for (i=0; i<=strlen(a); i++)
if (a[i]=’a’) k++;
return k;
}
void main()
{
char *a ;
do
{
printf («введите строку: «) ;
scanf («%s»,a) ;
printf («количество а =%d \n», func(a)) ;
}
wnile (strlen(a)!=0);
}
СТРУКТУРЫ:
- Структура «Автомобиль»: Задания 1, 2, 3, 4, 6.
- марка;
- цвет;
- серийный номер;
- регистрационный номер;
- количество дверей;
- дата выпуска (день, месяц, год);
- цена.
#include <conio.h>
#include <stdio.h>
#include <string.h>
struct DateAvto
{
unsigned char day;
unsigned char month;
unsigned char year;
};
struct Avto {
char marka[10];
char color[7];
char serial[16];
char regN[6];
unsigned char doors;
int price;
DateAvto DateV;
Avto *Next, *Previous;
};
Avto *Top, *Start, *End;
int SFA = 0;
void AddAvto();
void FillAvto();
void PrintHeader();
void PrintData();
void PrintPages();
void main ()
{
clrscr();
Top = new Avto;
Start = End = Top;
printf(«Введи количество записей в массиве: «);
scanf(«%d», &SFA);
clrscr();
FillAvto();
PrintData();
printf(«\n\nДополните массив новой записью…\n\n»);
Top = End;
AddAvto(); SFA++;
PrintPages();
}
void AddAvto()
{
printf(«Введи марку автомобиля: «);
scanf(«%10s», Top->marka); fflush(stdin);
printf(«Цвет: «);
scanf(«%7s», Top->color); fflush(stdin);
printf(«Серийный номер: «);
scanf(«%16s», Top->serial); fflush(stdin);
printf(«Регистрационный номер: «);
scanf(«%6s», Top->regN); fflush(stdin);
printf(«Количество дверей: «);
scanf(«%d», Top->doors); fflush(stdin);
printf(«Дата выпуска (день месяц год): «);
scanf(«%d %d %d», &Top->DateV.day, &Top->DateV.month, &Top->DateV.year); fflush(stdin);
printf(«Стоимость: «);
scanf(«%d», &Top->price); fflush(stdin);
Avto *temp = new Avto;
temp->Next = NULL;
temp->Previous = Top;
Top->Next = temp;
Top = temp;
Top->Previous = temp;
End = Top;
}
void FillAvto()
{
Top = Start;
for (int i=0; i<SFA; i++)
{
printf(«[%d]\n», i+1);
AddAvto();
}
}
void PrintHeader()
{
clrscr();
printf(«+———-+——-+—————-+——+———+—————+————+»);
printf(«| Марка | Цвет | Серийный № | Рег.№| Дверей | Дата выпуска | Стоимость |»);
printf(«+———-+——-+—————-+——+———+—————+————+»);
}
void PrintData()
{
PrintHeader();
Top = Start;
for (int i=0; i<SFA; i++)
{
printf(«|%10s|%7s|%16s|%6s|%8d| %2d.%2d.%2d |%11d|», Top->marka, Top->color, Top->serial, Top->regN, Top->doors, Top->DateV.day, Top->DateV.month, Top->DateV.year, Top->price);
Top = Top->Next;
}
}
void PrintPages()
{
PrintHeader();
Top = Start;
int n = 0;
for (int i=0; i<SFA; i++)
{
printf(«|%10s|%7s|%16s|%6s|%8d| %2d.%2d.%2d |%11d|», Top->marka, Top->color, Top->serial, Top->regN, Top->doors, Top->DateV.day, Top->DateV.month, Top->DateV.year, Top->price);
if (Top->Next != NULL) Top = Top->Next;
n++;
if (n>22) {
printf(«Для продолжения нажми любу кнопку…»);
getch();
clrscr();
PrintHeader();
n=0;
}
}
}
СПИСКИ:
- Удаление узла с конца списка
void DeleleEndAvto()
{
Avto *temp = End;
End = temp->Prior;
End->Next = NULL;
delete temp;
}
ФАЙЛЫ:
Дан символьный файл, содержащий информацию в виде: фамилия_имя_отчество. Записать эту информацию в другой символьный файл в виде: фамилия_и.о.
#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);
}
29)Написать программу, которая считывает текст из файла и выводит на экран только цитаты, то есть предложения, заключенные в кавычки.
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
clrscr();
char a;
FILE g;
g=fopen(D:\\text.txt»,»r»);
while(!feof(f))
{
fscan (g,”%c”&a);
if (a = = ’ ” ’)
{ fscan (g,”%c”&a);
while (a!=’”’) && (!feof(g))
{ printf(“ %c” , a)
fscan (g,”%c”&a);
}
printf(“\n”);
}
}
fclose(g);
}