Сама программа нужна для работ со списком, проблема только в сортировке и в добавлении в начало.
Самое важное это сортировку исправить, помогите пожалуйста в чем проблема.
Например если больше одного раза добавить в начало, то при выводе будет рандомные числа.
#include <iostream>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <malloc.h>
int n;
float cach;
int raz_m=0;
float *sp=(float *)malloc(n*sizeof(float));
float *sp_cash=(float *)malloc(n*sizeof(float));
void*dob_vn(int razm,float el){
for(int i=0;i<razm;i++){
sp_cash[i]=sp[i];
}
for(int i;i<razm;i++){
sp[i+1]=sp_cash[i];
}
sp[0]=el;
raz_m+=1;
}
void*dob_vk(int razm,float el){
sp[razm]=el;
raz_m+=1;
}
void*del_con(){
raz_m-=1;
}
void*del_nach(int razm){
for(int i=0;i<razm;i++){
sp_cash[i]=sp[i];
}
for(int i;i<razm;i++){
sp[i-1]=sp_cash[i];
}
raz_m-=1;
}
void*dob_poz(int poz,float el,int razm){
if(poz>razm){
printf("POSITION DOES NOT EXIST\n");
}else{
for(int i=0;i<razm;i++){
if(poz == i+1) sp_cash[i]=el;
else sp_cash[i]=sp[i];
}
for(int i=0;i<razm;i++){
sp[i]=sp_cash[i];
}
}
}
void*del_poz(int poz,int razm){
for(int i=0;i<razm;i++){
sp_cash[i]=sp[i];
}
for(int i=poz;i<razm;i++){
sp[i-1]=sp_cash[i];
}
raz_m-=1;
}
void*vivod(int razm){
for(int i=0;i<razm;i++){
printf("%i. %.0f\n",i+1,sp[i]);
}
if(razm == 0){
printf("LIST EMPTY\n");
}
}
void*selectSort(int razm_s)
{
int tmp, i, j, pos;
for(i = 1; i <= razm_s; ++i) // i - iiia? oaeouaai oaaa
{
pos = i;
tmp = sp[i];
for(j = i + 1; j <= razm_s; ++j) // oeee auai?a iaeiaiuoaai yeaiaioa
{
if (sp[j] < tmp)
{
pos = j;
tmp = sp[j];
}
}
}
}
int main(){
int code;
int poz;
int razm;
int col;
do{
int flaq;
printf("1-ADD TO TOP\n2-REMOVE FROM TOP \n3-ADD TO POSITION\n4-REMOVE FROM POSITION\n5-ADD TO END\n6-REMOVE FROM END\n7-SHOW LIST\n8-SORT \n>");
scanf("%i", &flaq);
system("cls");
switch(flaq){
case 1:printf("ENTER VALUE\n"); scanf("%f",&cach);dob_vn(raz_m,cach);printf("ENTER - Menu\nEsc - Exit"); code=getch();system("cls");break;
case 2:del_nach(raz_m);printf("ENTER - Continue\nEsc - Exit"); code=getch();system("cls");break;
case 3:printf("ENTER POSITION FOR ADD\n");scanf("%i",&poz);printf("Vvedite element\n");scanf("%f",&cach);dob_poz(poz,cach,raz_m);printf("ENTER - Continue\nEsc - Exit"); code=getch();system("cls");break;
case 4:printf("ENTER POSITION FOR REMOVE\n");scanf("%i",&poz);del_poz(poz,raz_m);printf("ENTER - Continue\nEsc - Exit"); code=getch();system("cls");break;
case 5:printf("ENTER VALUE\n"); scanf("%f",&cach);dob_vk(raz_m,cach);printf("ENTER - Continue\nEsc - Exit"); code=getch();system("cls");break;
case 6:del_con();printf("ENTER - Continue\nEsc - Exit"); code=getch();system("cls");break;
case 7:vivod(raz_m);printf("ENTER - Continue\nEsc - Exit"); code=getch();system("cls");break;
case 8: printf("SORT COMPLETE\n");selectSort(col);printf("\nENTER - Continue\nEsc - Exit"); code=getch();system("cls");break;
}
}while(code==13);
}
Примечание:
спасибо огромное, как то просмотрел не увидел, но самое важно сортировка не как не могу понять в чем ошибка
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.