лабораторные работы / ргр / РГР kjubxtcrjt
.docxЗадание №1
Дан двумерный массив С[10][10], поменять местами элементы первого столбца и последнего второго и предпоследнего и т.д., результат записать в файл.
Блок-схема:
Начало
fp=fopen(D:\\n.txt.\0"\,wt)
Ошибка
srand(time(NULL))
i=0; i<10; i++
j=0; j<10; j++
C[i][j]=rand()%100
C[i][j]
\n
i=0; i<10; i++
j=0; j<10; j++
…
…
tmp=C[i][j]
c[i][j]=c[i][10-j-1]
c[i][10-j-1]=tmp
\n
i=0; i<10; i++
j=0; j<10; j++
c[i][j]
\n
fclose(fp)
конец
Код программы:
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "locale.h"
#define FNAME "D:\\n.txt."
void main()
{
FILE *fp;
char c[10][10];
int tmp,i,j;
setlocale(LC_ALL, "rus");
fp=fopen(FNAME,"wt");
if (fp==NULL)
{
printf ("ошибка");
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
c[i][j]=rand()%100;
printf("%i ",c[i][j]);
}
printf("\n");
}
for (i=0;i<10;i++)
{
for (j=0;j<5;j++)
{
tmp = c[i][j];
c[i][j]=c[i][10-j-1];
c[i][10-j-1]=tmp;
}
}
printf("\n");
printf("Полученный массив:\n");
printf("\n");
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
printf("%i ",c[i][j]);
fprintf(fp,"%i ",c[i][j]);
}
printf("\n");
fprintf(fp,"\n");
}
fclose(fp);
getch();
}
Окно выполнения:
Результат, записанный в файл:
Задание №2
Массив, заданный в первой задаче считать из файла и отсортировать:
1. По возрастанию по строкам, сортировка вставкой
2. По убыванию по столбцам, сортировка вставкой
1.По возрастанию по строкам, сортировка вставкой:
Блок-схема:
Начало
fp=fopen(D:\\n.txt.\0"\,rt)
fp==NULL
Ошибка
i=0; i<10; i++
j=0; j<10; j++
с[i][j]
fclose(fp)
t=0; t<6; t++
i=0; i<10; i++
…
…
i==0; tmp[t][i]=c[t][i]
j=1; j>=1; j--
c[t][i]<tmp[c][j-1]
tmp[t][j]=tmp[t][j-1];
tmp[t][j-1]=b[t][i]
(j==i)tmp[t][j]=c[t][i]
k=0; k<10; k++
t=0;t<10; t++
k<=i
tmp[k][t]
t==9
…
…
tmp[k][t]
tmp[k][t]
t==9
\n
Конец
Код программы:
// парма.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "locale.h"
#define FNAME "D:\\n.txt."
void main()
{
FILE *fp;
char c[10][10];
int tmp[10][10];
int t=0,k,i,j;
setlocale(LC_ALL, "rus");
fp=fopen(FNAME,"r");
if (fp==NULL)
{
printf ("ошибка");
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
fscanf(fp,"%2i ",&c[i][j]);
}
}
fclose(fp);
printf("Исходный массив, считанный из файла\n");
printf("\n");
for(i=0; i<10; i++)
{
for(j=0; j<10; j++)
{
printf("%2i ",c[i][j]);
}
printf("\n");
}
printf("\n");
printf("Отсортированный массив по возрастанию по строкам методом вставки\n");
printf("\n");
for(t=0;t<10;t++)
{
for(i=0;i<10;i++)
{
if(i==0)tmp[t][i]=c[t][i];
else
{
for(j=i;j>=1;j--)
{
if(c[t][i]<tmp[t][j-1])
{
tmp[t][j]=tmp[t][j-1];
tmp[t][j-1]=c[t][i];
}
else if(j==i)tmp[t][j]=c[t][i];
}
}
}
}
for(k=0;k<10;k++)
for(t=0;t<10;t++)
{
if(k<=i)
{
printf("%2.0i ",tmp[k][t]);
if(t==9) printf("\n");
}
else
{
tmp[k][t]=0;
printf("%i ",tmp[k][t]);
if(t==9) printf("\n");
}
}
getch();
}
Окно выполнения:
2. По убыванию по столбцам, сортировка вставкой
Блок-схема:
Начало
fp=fopen(D:\\n.txt.\0"\,rt)
fp==NULL
Ошибка
i=0; i<10; i++
j=0; j<10; j++
c[i][j]
fclose(fp)
t=0; t<10; t++
i=0; i<10; i++
i==0; tmp[i][t]=c[i][t]
j=1; j>=1; j--
c[i][t]<c[j-1][t]
…
…
tmp[j][t]=c[j-1][t];
c[j-1][t]=c[i][t]
(j==i)tmp[j][t]=c[i][t]
k=0; k<10; k++
t=0;t<10; t++
tmp[k][t]
t==9
\n
Конец
Код программы:
// 1234.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "locale.h"
#define FNAME "D:\\n.txt."
void main()
{
FILE *fp;
char c[10][10];
int tmp[10][10];
int t=0,k,i,j;
setlocale(LC_ALL, "rus");
fp=fopen(FNAME,"r");
if (fp==NULL)
{
printf ("ошибка");
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
fscanf(fp,"%2i ",&c[i][j]);
}
}
fclose(fp);
printf("Исходный массив, считанный из файла\n");
printf("\n");
for(i=0; i<10; i++)
{
for(j=0; j<10; j++)
{
printf("%2i ",c[i][j]);
}
printf("\n");
}
printf("Отсортированный массив по убыванию по столбцам методом вставки\n");
printf("\n");
for(t=0;t<10;t++)
{
for(i=0;i<10;i++)
{
if(i==0)tmp[i][t]=c[i][t];
else
{
for(j=i;j>=1;j--)
{
if(c[i][t]>tmp[j-1][t])
{
tmp[j][t]=tmp[j-1][t];
tmp[j-1][t]=c[i][t];
}
else if(j==i)tmp[j][t]=c[i][t];
}
}
}
}
for(k=0;k<10;k++)
for(t=0;t<10;t++)
{
printf("%2.0i ",tmp[k][t]);
if(t==9)
printf("\n");
}
getch();
}
Окно выполнения:
Задание №3
Вычислить произведение бесконечного ряда:
S=1+
1.Для указанного количества членов ряда (количество членов ряда вводятся с клавиатуры).
Блок-схема:
Начало
n, i, S=1
i=1; i<n; i++
S=S+(1+(1/(n*n))
S
Конец
Код программы:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "locale.h"
#include "math.h"
void main ()
{
float n,i,S=1;
setlocale(LC_ALL, "rus");
printf("Сколько элементов считать?\n");
scanf ("%f", &n);
for (i=1; i<n; i++)
{
S=S+(1+(1/(n*n)));
}
printf("\n");
printf("Сумма:%g", S);
getch ();
}
Окно выполнения:
2.С заданной точностью (точность вводится с клавиатуры).
Блок-схема:
Начало
n, i, T=0, S, S1
S=1;
S1=1
i=1; i<n; i++
S=S+(1+(1/(n*n)))
i=1; i<10; i++
T=(abs(S1-S)
S=S+(1+(1/(n*n)))
S1=S
S1
Конец
Код программмы:
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "locale.h"
#include "math.h"
void main ()
{
float n,i,S,S1,T=0;
S=1;
S1=1;
setlocale(LC_ALL, "rus");
printf("Количество элементов?\n");
scanf ("%f", &n);
for (i=1; i<n; i++)
{
S=S+(1+(1/(n*n)));
}
printf("\n");
printf("Cумма:%g", S);
printf("\n");
printf("\nВведите точность:\n");
scanf ("%f", &n);
for (i=1; i<10; i++)
{
if (T==(abs(S1-S)))
S=S+(1+(1/(n*n)));
S1=S;
}
printf("\n Произведение ряда с заданной точностью=%g", S1);
getch ();
}
Окно выполнения: