Сформировать и напечатать таблицу значений функции - C (СИ)
Формулировка задачи:
Спасибо большое, все работает. Могу попросить о последней задаче? Тоже самое - написать с помощью указателей.
В результате эксперимента получены наборы значений аргумента x и соответствующих значений функции у. Сформировать и напечатать таблицу значений функции, упорядочив их по возрастанию х. Если одному значению функции х соответствует несколько значений у, то взять их среднее значение
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#define n1 100
#define m1 100
void main(void)
{
clrscr();
int a[n1][m1], n, i, j, temp, k, v;
float b[n1][m1];
randomize();
n = 7;
for (i = 0; i < n; i++)
for (j = 0; j < 2; j++)
a[i][j] = random(10);
for (i = 0; i < n; i++)
{
for (j = 0; j < 2; j++)
printf("%i ", a[i][j]);
printf("\n");
}
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
{
if (a[j][0] < a[i][0])
{
temp = a[i][0];
v = a[i][1];
a[i][0] = a[j][0];
a[i][1] = a[j][1];
a[j][0] = temp;
a[j][1] = v;
}
}
}
printf("\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < 2; j++)
printf("%i ", a[i][j]);
printf("\n");
}
i = 0;
k = 1;
while (i < n)
{
if (a[i][0] != a[i + 1][0])
{
b[i][0] = a[i][0];
b[i][1] = a[i][1] / k;
k = 1;
i = i + 1;
}
if (a[i][0] == a[i + 1][0])
{
a[i][1] = a[i][1] + a[i + 1][1];
k = k + 1;
for (j = i + 1; j < n; j++)
{
a[j][0] = a[j + 1][0];
a[j][1] = a[j + 1][1];
}
n = n - 1;
}
}
printf("\n");
for (i = 0; i <= n; i++)
{
for (j = 0; j < 2; j++)
printf("%.2f ", b[i][j]);
printf("\n");
}
getch();
}Решение задачи: «Сформировать и напечатать таблицу значений функции»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h> //time();
#define n1 100
#define m1 100
//return int
int main(void)
{
//"Очистить" терминал
system("cls"); //clrscr();
int a[n1][m1], n, i, j, temp, k, v;
float b[n1][m1];
//"Установка" начального значения для rand()
srand(time(NULL)); //randomize();
n = 7;
for (i = 0; i < n; i++)
for (j = 0; j < 2; j++)
//"Генерация" значений от 0 до 10
*(*(a+i)+j) = (int)rand() % 11; //random(10);
for (i = 0; i < n; i++)
{
for (j = 0; j < 2; j++)
printf("%i ", *(*(a+i)+j));
printf("\n");
}
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
{
if (*(*(a+j)+0) < *(*(a+i)+0))
{
temp = *(*(a+i)+0);
v = *(*(a+i)+1);
*(*(a+i)+0) = *(*(a+j)+0);
*(*(a+i)+1) = *(*(a+j)+1);
*(*(a+j)+0) = temp;
*(*(a+j)+1) = v;
}
}
}
printf("\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < 2; j++)
printf("%i ", *(*(a+i)+j));
printf("\n");
}
i = 0;
k = 1;
while (i < n)
{
if (*(*(a+i)+0) != *(*(a+i+1)+0))
{
*(*(b+i)+0) = *(*(a+i)+0);
*(*(b+i)+1) = *(*(a+i)+1) / k;
k = 1;
i = i + 1;
}
if (*(*(a+i)+0) == *(*(a+i+1)+0))
{
*(*(a+i)+1) = *(*(a+i)+1) + *(*(a+i+1)+1);
k = k + 1;
for (j = i + 1; j < n; j++)
{
*(*(a+j)+0) = *(*(a+j+1)+0);
*(*(a+j)+1) = *(*(a+j+1)+1);
}
n = n - 1;
}
}
printf("\n");
for (i = 0; i <= n; i++)
{
for (j = 0; j < 2; j++)
printf("%.2f ", *(*(b+i)+j));
printf("\n");
}
getch();
//return int
return 0;
}