Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- void sortArrayLowToBig(long input[], long length)
- {
- for (long i = 0; i < length; i++)
- {
- for (long k = 0; k < length; k++)
- {
- long temp = input[k];
- if (input[k] > input[k + 1])
- {
- input[k] = input[k + 1];
- input[k + 1] = temp;
- }
- }
- }
- }
- long stringLength(char string[])
- {
- long len = 0;
- for (long i = 0; i <= 512; i++)
- {
- if (string[i] == '\0')
- {
- return len;
- }
- len++;
- }
- }
- long stringToInt(char string[])
- {
- long mul = 1;
- long outNum = 0, positive = 1;
- long length = stringLength(string);
- for (long i = length - 1; i >= 0; i--)
- {
- if (string[i] == 45)
- {
- positive = -1;
- }
- else
- {
- outNum += (string[i] - 48) * mul;
- mul *= 10;
- }
- }
- return outNum * positive;
- }
- long validatedIntInput(char string[])
- {
- //проверява дали е инт по ascii
- long length = stringLength(string);
- for (long i = 0; i < length; i++)
- {
- if (string[i] < 48 && string[i] > 57)
- {
- return -1;
- }
- }
- return stringToInt(string);
- }
- void newArray(long vhod[], long sortedArray[], int &sortedArrayLenght)
- {
- int smallesNum = vhod[0];
- int mqstoVInput = 0;
- int count = 0;
- for (int i = 1; i < 100; i++)
- {
- if (vhod[i] < smallesNum)
- {
- smallesNum = vhod[i];
- mqstoVInput = i+1;
- }
- }
- for (int y = mqstoVInput; y < 100; y++)
- {
- sortedArray[count] = vhod[y];
- count++;
- }
- sortedArrayLenght = count;
- }
- void startMenu(long vhod[], int &NumsCounter)
- {
- system("CLS");
- int naiGolqmaNechetnaCifra = 1;
- int edinici = 0;
- int troiki = 0;
- int petici = 0;
- int sedmici = 0;
- int devqtki = 0;
- int chislo;
- char inputString[128];
- for (long i = 0; i <= 99; i++)
- {
- //printf("You must enter %d more numbers : \n", 100 - i);
- //scanf("%s", &inputString);
- chislo = rand(); //!!! ред 99 и 100 ти генерират масив от 100 елемента за да не си играеш да го
- itoa(chislo, inputString, 10); //въвеждаш сам , 97 и 98 са ти стандртния вход но са сложени като коментари за да не го вкарваш на ръка а автоматично.
- for (int y = 0; y < 128; y++) //Боря нечетни цифри
- { //след което най-голямата
- if (inputString[y] != '\0') //срещната нечетна цифра
- { //присвоявам колко пъти съм срещнал
- if (inputString[y] == '1')
- {
- edinici++;
- }
- else if (inputString[y] == '3')
- {
- troiki++;
- }
- else if (inputString[y] == '5')
- {
- petici++;
- }
- else if (inputString[y] == '7')
- {
- sedmici++;
- }
- else if (inputString[y] == '9')
- {
- devqtki++;
- }
- }
- else y = 128;
- }
- if (devqtki > 0) NumsCounter = devqtki;
- else if (sedmici > 0) NumsCounter = sedmici;
- else if (petici > 0) NumsCounter = petici;
- else if (troiki > 0) NumsCounter = troiki;
- else if (edinici > 0) NumsCounter = edinici;
- vhod[i] = validatedIntInput(inputString);
- system("CLS");
- }
- }
- void saveFile(long vhod[100], int &lineWithLowestNegNum)
- {
- system("CLS");
- char inputName[128];
- int a = 100 / 8;
- int b = 100 % 8;
- long smallestNeg = 0;
- printf("Enter file name : \n");
- scanf("%s", &inputName);
- FILE* file;
- file = fopen(inputName, "w+");
- if (file)
- {
- for (long i = 0; i < a ; i++)
- {
- fprintf(file, "%i %i %i %i %i %i %i %i\n",
- vhod[i * 8], vhod[i * 8 + 1], vhod[i * 8 + 2], vhod[i * 8 + 3],
- vhod[i * 8 + 4], vhod[i * 8 + 5], vhod[i * 8 + 6], vhod[i * 8 + 7]);
- if(vhod[i * 8] < 0 && vhod[i * 8] <= smallestNeg)
- {
- smallestNeg = vhod[i * 8];
- lineWithLowestNegNum = i + 1;
- }
- if (vhod[i * 8 +1] < 0 && vhod[i * 8+1] <= smallestNeg)
- {
- smallestNeg = vhod[i * 8+1];
- lineWithLowestNegNum = i + 1;
- }
- if (vhod[i * 8+2] < 0 && vhod[i * 8+2] <= smallestNeg)
- {
- smallestNeg = vhod[i * 8+2];
- lineWithLowestNegNum = i + 1;
- }
- if (vhod[i * 8+3] < 0 && vhod[i * 8+3] <= smallestNeg)
- {
- smallestNeg = vhod[i * 8+3];
- lineWithLowestNegNum = i + 1;
- }
- if (vhod[i * 8+4] < 0 && vhod[i * 8+4] <= smallestNeg)
- {
- smallestNeg = vhod[i * 8+4];
- lineWithLowestNegNum = i + 1;
- }
- if (vhod[i * 8+5] < 0 && vhod[i * 8+5] <= smallestNeg)
- {
- smallestNeg = vhod[i * 8+5];
- lineWithLowestNegNum = i + 1;
- }
- if (vhod[i * 8+6] < 0 && vhod[i * 8+6] <= smallestNeg)
- {
- smallestNeg = vhod[i * 8+6];
- lineWithLowestNegNum = i + 1;
- }
- if (vhod[i * 8+7] < 0 && vhod[i * 8+7] <= smallestNeg)
- {
- smallestNeg = vhod[i * 8+7];
- lineWithLowestNegNum = i + 1;
- }
- }
- if (b > 0)
- {
- for (int c = 0; c < b; c++)
- {
- fprintf(file, "%i ", vhod[(100 - b) + c]);
- }
- }
- fprintf(file, "\n %i \n", lineWithLowestNegNum);
- }
- else
- {
- printf("file could not be found or created");
- }
- fclose(file);
- }
- void loadFile(long vhod[100], int &lineWithLowestNegNum)
- {
- system("CLS");
- char inputFileName[256];
- int counting8s = 0;
- printf("Enter file name : ");
- scanf("%s", &inputFileName);
- char num[255];
- char num1[255];
- char num2[255];
- char num3[255];
- char num4[255];
- char num5[255];
- char num6[255];
- char num7[255];
- char lines[5];
- FILE* file = fopen(inputFileName, "r");
- for (long i = 0; i < (100/8); i++)
- {
- fscanf(file, "%s %s %s %s %s %s %s %s\n", num, num1, num2, num3, num4, num5, num6, num7);
- vhod[i * 8] = validatedIntInput(num);
- vhod[i * 8 + 1] = validatedIntInput(num1);
- vhod[i * 8 + 2] = validatedIntInput(num2);
- vhod[i * 8 + 3] = validatedIntInput(num3);
- vhod[i * 8 + 4] = validatedIntInput(num4);
- vhod[i * 8 + 5] = validatedIntInput(num5);
- vhod[i * 8 + 6] = validatedIntInput(num6);
- vhod[i * 8 + 7] = validatedIntInput(num7);
- }
- fscanf(file, "%s %s %s %s\n", num, num1, num2, num3);
- vhod[96] = validatedIntInput(num);
- vhod[97] = validatedIntInput(num1);
- vhod[98] = validatedIntInput(num2);
- vhod[99] = validatedIntInput(num3);
- fscanf(file, "%s \n", lines);
- lineWithLowestNegNum = validatedIntInput(lines);
- fclose(file);
- system("PAUSE");
- }
- void printArray(long vhod[100], int NumsCounter, int lineWithLowestNegNum)
- {
- system("CLS");
- printf("Array Elements : \n");
- for (long i = 0; i <= 99; i++)
- {
- printf("%d\n", vhod[i]);
- }
- if (NumsCounter != 0)
- {
- printf("%d puti sreshtanto nechetno chislo s nai golqm ascii kod v sortiraniq masiv", NumsCounter);
- }
- if (lineWithLowestNegNum != 0)
- {
- printf("Line in which lowest negative number can be spotted: %d", lineWithLowestNegNum);
- }
- printf("Press enter to go back to the main menu. \n");
- system("PAUSE");
- }
- void printNewArray(long sortedArray[],int sortedArrayLenght)
- {
- system("CLS");
- printf("Sorted array elements : \n");
- for (long i = 0; i < sortedArrayLenght; i++)
- {
- printf("%d\n", sortedArray[i]);
- }
- printf("Press enter to go back to the main menu. \n");
- system("PAUSE");
- }
- long main()
- {
- long vhod[100];
- long sortedArray[100];
- int sortedArrayLenght = 0;
- int lineWithLowestNegNum = 0;
- int NumsCounter = 0;
- long choice = 0;
- while (choice != 6)
- {
- system("CLS");
- printf("1. Add / Change the input array.\n");
- printf("2. Show the input array.\n");
- printf("3. Show the sorted array.\n");
- printf("4. Save to file.\n");
- printf("5. Load from file.\n");
- printf("6. Exit.\n");
- scanf("%d", &choice);
- if (choice == 1)
- {
- // въвеждаме или променяме масив
- startMenu(vhod, NumsCounter);
- newArray(vhod, sortedArray, sortedArrayLenght);
- // сортираме sortedArray
- sortArrayLowToBig(sortedArray, sortedArrayLenght);
- }
- else if (choice == 2)
- {
- printArray(vhod, NumsCounter, lineWithLowestNegNum);
- }
- else if (choice == 3)
- {
- printNewArray(sortedArray, sortedArrayLenght);
- }
- else if (choice == 4)
- {
- saveFile(vhod, lineWithLowestNegNum);
- }
- else if (choice == 5)
- {
- loadFile(vhod, lineWithLowestNegNum);
- }
- Sleep(50);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement