Премини към съдържанието
15 години Kaldata.com – време е да почерпим! Прочети още... ×

Препоръчан отговор


Здравейте може ли малко помощ с една програма на C. Кода е написан, но не се компилира на VS 2010. Ако е възможно да оправите грешките.Благодаря! 

#include<stdio.h>void print_menu(){  printf("n");  printf("1 - Wywejdane n2 - Obrabotwane n3 - Sortirane n4 - Exit n");  printf("n");}void array_input(int *arr, int size){  int i;  for (i = 0; i < size; i++)  {    printf("Wywedi %d-iq element: ", i + 1);    scanf("%d", (arr + i));  }  printf("n");}void print_array(int *arr, int size){  int i;  for (i = 0; i < size; i++)  {    printf("%d ", *(arr + i));  }  printf("n");}void odd_numbers(int *arr, int *masiv1, int sizeArr, int * sizeMasiv1){  int index = 0; //Брой на елементите.  int i;  for (i = 1; i < sizeArr; i += 2) // i се увеличава с 2 (не с 1) за да пропуска четните числа. (1, 1 + 2 = 3, 3 + 2 = 5, ....).  {    if ((*(arr + i) % 2 == 1) && (*(arr + i) % 5 == 0))    {      *(masiv1 + index) = *(arr + i); //Добавя всеки елемент за който if-а е true.      index++; //Увеличава броя на елементите.    }  }  *sizeMasiv1 = index; //Записва в SIZE_MASIV1 ( намира се в main() ) колко е дълъг masiv1.}void even_numbers(int *arr, int *masiv2, int sizeArr, int * sizeMasiv2){  int index = 0; //Брой на елементите.  int i;  for (i = 0; i < sizeArr; i += 2) // i се увеличава с 2 (не с 1) за да пропуска нечетните числа. (0, 0 + 2 = 2, 2 + 2 = 4, ....).  {    if ((*(arr + i) % 2 == 0) && (*(arr + i) % 4 == 0))    {      *(masiv2 + index) = *(arr + i); //Добавя всеки елемент за който if-а е true.      index++; //Увеличава броя на елементите.    }  }  *sizeMasiv2 = index; //Записва в SIZE_MASIV2 ( намира се в main() ) колко е дълъг masiv2.}void switch_values(int *a, int *b){  int temp = *a;  *a = *b;  *b = temp;}void sort_array(int *arr, int size){  int sorted = size; //Броя на операциите при сортирането.  while (sorted > 1) // Ако само една или нула иперации са изпълнени значи е сортиран.  {    sorted = 0; //Първо казваме че е сортиран;    int i;    for (i = 0; i < size - 1; i++) // От първия до предпоследния елемент.    {      if (*(arr + i) > *(arr + i + 1))      {        switch_values(&(*(arr + i)), &(*(arr + i + 1))); //Разменя стойностите.        sorted++; //Увеличаване на броя на операциите с 1;      }    }  }}void merge_arrays(int *newArr, int *masiv1, int *masiv2, int sizeMasiv1, int sizeMasiv2){  int index = 0;  int i;  for (i = 0; i < sizeMasiv1; i++)  {    *(newArr + index) = *(masiv1 + i);    index++;  }  for (i = 0; i < sizeMasiv2; i++)  {    *(newArr + index) = *(masiv2 + i);    index++;  }  sort_array(newArr, index);}int main(){  int const SIZE_ARRAY = 10;  int SIZE_MASIV1 = 0, SIZE_MASIV2 = 0;  int array[100];  int masiv1[100];  int masiv2[100];  char command;  while (1)  {    print_menu();    scanf("n%c", &command);    printf("n");    if (command == '1')    {      array_input(array, SIZE_ARRAY);      print_array(array, SIZE_ARRAY);    }    else if (command == '2')    {      odd_numbers(array, masiv1, SIZE_ARRAY, &SIZE_MASIV1);      even_numbers(array, masiv2, SIZE_ARRAY, &SIZE_MASIV2);      print_array(masiv1, SIZE_MASIV1);      print_array(masiv2, SIZE_MASIV2);    }    else if (command == '3')    {      sort_array(masiv1, SIZE_MASIV1);      sort_array(masiv2, SIZE_MASIV2);      print_array(masiv1, SIZE_MASIV1);      print_array(masiv2, SIZE_MASIV2);      int SORTED_ARRAY_SIZE = SIZE_MASIV1 + SIZE_MASIV2;      int sorted_array[100];            merge_arrays(sorted_array, masiv1, masiv2, SIZE_MASIV1, SIZE_MASIV2);      print_array(sorted_array, SORTED_ARRAY_SIZE);    }    else if (command == '4')    {      break;    }    else    {      printf("Greshka: Nevalidna komanda.n");    }  }}

 

и съответно грешките са:warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. see declaration of 'scanf' error C2143: syntax error : missing ';' before 'type' error C2065: 'i' : undeclared identifiererror C2065: 'i' : undeclared identifiererror C2065: 'i' : undeclared identifier error C2065: 'i' : undeclared identifier error C2065: 'i' : undeclared identifier error C2065: 'i' : undeclared identifier error C2065: 'i' : undeclared identifier error C2143: syntax error : missing ';' before 'type' error C2143: syntax error : missing ';' before 'type' error C2065: 'sorted_array' : undeclared identifier warning C4047: 'function' : 'int *' differs in levels of indirection from 'int': warning C4024: 'merge_arrays' : different types for formal and actual parameter 1: error C2065: 'sorted_array' : undeclared identifier warning C4047: 'function' : 'int *' differs in levels of indirection from 'int': warning C4024: 'print_array' : different types for formal and actual parameter 1: error C2065: 'SORTED_ARRAY_SIZE' : undeclared identifier

Редактирано от koki94 (преглед на промените)

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Здравейте може ли малко помощ с една програма на C. Кода е написан, но не се компилира на VS 2010. Ако е възможно да оправите грешките.Благодаря!...

warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

 see declaration of 'scanf' error C2143: syntax error : missing ';' before 'type' error C2065: 'i' : undeclared identifiererror C2065: 'i' : undeclared identifiererror C2065: 'i' : undeclared identifier error C2065: 'i' : undeclared identifier error C2065: 'i' : undeclared identifier error C2065: 'i' : undeclared identifier error C2065: 'i' : undeclared identifier error C2143: syntax error : missing ';' before 'type' error C2143: syntax error : missing ';' before 'type' error C2065: 'sorted_array' : undeclared identifier warning C4047: 'function' : 'int *' differs in levels of indirection from 'int': warning C4024: 'merge_arrays' : different types for formal and actual parameter 1: error C2065: 'sorted_array' : undeclared identifier warning C4047: 'function' : 'int *' differs in levels of indirection from 'int': warning C4024: 'print_array' : different types for formal and actual parameter 1: error C2065: 'SORTED_ARRAY_SIZE' : undeclared identifier

Здравейте !

 

Кода, който сте приложили се компилира и работи. Сигурен ли сте, че грешките, които Ви дава се получават, когато се опитате да компилирате програмата в тази ѝ версия ?

Прегледах и кода, спрямо проблемите, който сте приложил и поне на бърз поглед не виждам причина да Ви ги дава.

Да не би това да се получава, защото не сте приложил промените или компилирате стара версия ?

 

Поздрави !

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Благодаря за отговоря. Наистина програмата не се компилираше от 2010 но от по-новите версии тръгва без проблем.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Благодаря за отговоря. Наистина програмата не се компилираше от 2010 но от по-новите версии тръгва без проблем.

Хм ... всъщност идеята в случая ми беше не в смяната на компилатора и/или IDE-то. По -скоро беше насочена в това дали именно цитирания код се опитва да се компилира или някакво старо копие (кеширана версия ?), в която примерно липсват редовете 

int i;

и други. Възможно е и нещо самото IDE да се е натрошило, но честно казано, това поне при мен се получава изключително рядко и често е съпроводено от системни грешки на ОС-то. 

 

Предполагам, щом в момента всичко е наред, можем да считаме проблема Ви за решен :).

 

Поздрави !

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.