Почему выдает такой результат? - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h.>
#include <time.h>
#define max 10
void BubbleSort(float m[],int n)
{
int i,j;
float tmp;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
if(m[j]>m[j+1])
{
tmp=m[j];
m[j]=m[j+1];
m[j+1]=tmp;
}
}
int OtriChisla()
{
int i,n,j,p;
int g[max];
FILE *file;
file=fopen("vvod_chisel.txt","w");
if(file==NULL)
{
printf("ERROR, Bad file");
return 1;
}
fclose(file);
printf("Наберите числа в файле: vvod_chisel.txt\n Затем нажмите 1");
scanf("%d",&p);
if(p==1){
file=fopen("vvod_chosel.txt","r");
for(i;i<max;i++)
{
fscanf(file,"%d ",&g[i]);
}
fclose(file);
printf("Вы ввели такой массив: ");
for(i;i<max-1;i++) printf("%d, ",g[i]);
printf("%d.",g[i]);
printf("\n");
n = max;
for(i=0;i<n;i++)
if (g[i] < 0) {
n=n-1;
for (j=i; j < n; j++)
g[j] = g[j+1];
i--;
}
for(i;i<max-1;i++)
printf("%d, ",g[i]);
printf("%d.",g[i]);}else printf("Error");
}
int KorniYravnenia()
{
float a,b,c,d,x1,x2;
printf("\nax^2+ bx + c = 0");
printf("\nЧему равен первый коэффициент? ");
scanf("%f",&a);
printf("Чему равен второй коэффициент? ");
scanf("%f",&b);
printf("Чему равен третий коэффициент? ");
scanf("%f",&c);
d=(b*b)-(4*a*c);
printf("D=%f",d);
if(d<0){
printf("\nD<0");
printf("\nНет Решения");
}else if(d==0){
printf("\nD=0");
x1=(-1.*b)/(2*a);
printf("x1,2=%f",x1);
}else if (d>0) {
printf("\nD>0");
x1=((-1.*b)+sqrt(d))/(2*a);
x2=((-1.*b)-sqrt(d))/(2*a);
printf("\nx1=%f",x1);
printf("\nx2=%f",x2);
}
}
float AlgSort()
{
float m[max];
int i;
srand(time(NULL));
for(i=0;i<max;i++)
{
m[i]=rand()%100/10.;
}
printf("Сгенерированный массив: ");
for(i=0;i<max-1;i++) printf("%.1f ",m[i]);
printf("%.1f\n",m[i]);
BubbleSort(m,max);
printf("Упорядоченный массив: ");
for(i=0;i<max;i++) printf("%.1f ",m[i]);
}
int main(int argc, char *argv[])
{
float x1,x2;
setlocale(LC_ALL , "RUS");
int VSE;
printf("[1]Корни квадратного уравнения.\n[2]Алгоритм сортировки массива (Алгоритм пузырька).\n[3]Уничтожение всех отрицательный чисел в массиве.\n ");
printf(" Введите значение ");
scanf("%d",&VSE);
switch(VSE)
{
case 1: KorniYravnenia();break;
case 2: AlgSort();break;
case 3: OtriChisla();break;
default: printf("ERROR");
}
return 0;
}Решение задачи: «Почему выдает такой результат?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#include <time.h>
#define max 10
void BubbleSort(float m[],int n)
{
int i,j;
float tmp;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
if(m[j]>m[j+1])
{
tmp=m[j];
m[j]=m[j+1];
m[j+1]=tmp;
}
}
int OtriChisla()
{
int i, n, j, p, a;
int g[max];
srand(time(NULL));
FILE * file;
file = fopen("vvod_chisel.txt", "w");
if (file == NULL)
{
printf("ERROR, Bad file");
return 1;
}
else
{
for(i = 0; i < max; i++)
{
a = -100 + rand() % 200;
fprintf(file, "%d\n", a);
}
}
fclose(file);
file = fopen("vvod_chisel.txt", "r");
for(i = 0; i < max || !feof(file); i++)
{
fscanf(file, "%d", &g[i]);
}
fclose(file);
printf("Вы ввели такой массив: ");
for (i = 0; i < max; i++)
printf("%d ", g[i]);
printf("\n");
n = max;
for (i = 0; i < n; i++)
if (g[i] < 0)
{
n = n - 1;
for (j = i; j < n; j++)
g[j] = g[j + 1];
i--;
}
printf("Результат: ");
for (i = 0; i < n; i++)
printf("%d, ", g[i]);
}
int KorniYravnenia()
{
float a,b,c,d,x1,x2;
printf("\nax^2+ bx + c = 0");
printf("\nЧему равен первый коэффициент? ");
scanf("%f",&a);
printf("Чему равен второй коэффициент? ");
scanf("%f",&b);
printf("Чему равен третий коэффициент? ");
scanf("%f",&c);
d=(b*b)-(4*a*c);
printf("D=%f",d);
if(d<0){
printf("\nD<0");
printf("\nНет Решения");
}else if(d==0){
printf("\nD=0");
x1=(-1.*b)/(2*a);
printf("x1,2=%f",x1);
}else if (d>0) {
printf("\nD>0");
x1=((-1.*b)+sqrt(d))/(2*a);
x2=((-1.*b)-sqrt(d))/(2*a);
printf("\nx1=%f",x1);
printf("\nx2=%f",x2);
}
}
float AlgSort()
{
float m[max];
int i;
srand(time(NULL));
for(i=0;i<max;i++)
{
m[i]=rand()%100/10.;
}
printf("Сгенерированный массив: ");
for(i=0;i<max-1;i++) printf("%.1f ",m[i]);
printf("%.1f\n",m[i]);
BubbleSort(m,max);
printf("Упорядоченный массив: ");
for(i=0;i<max;i++) printf("%.1f ",m[i]);
}
int main(int argc, char *argv[])
{
float x1,x2;
setlocale(LC_ALL , "RUS");
int VSE;
printf("[1]Корни квадратного уравнения.\n[2]Алгоритм сортировки массива (Алгоритм пузырька).\n[3]Уничтожение всех отрицательный чисел в массиве.\n");
printf("Введите значение: ");
scanf("%d",&VSE);
switch(VSE)
{
case 1: KorniYravnenia();break;
case 2: AlgSort();break;
case 3: OtriChisla();break;
default: printf("ERROR");
}
printf("\n");
return 0;
}
Объяснение кода листинга программы
- В функции
BubbleSortпроисходит сортировка массива методом пузырька. - В функции
OtriChislaгенерируется случайный массив чисел, затем он сортируется по возрастанию и выводится на экран. - В функции
KorniYravneniaпользователь вводит коэффициенты квадратного уравнения, затем программа находит его корни и выводит их на экран. - В функции
AlgSortгенерируется случайный массив чисел, затем он сортируется методом пузырька и выводится на экран.