Итак, я застрял в том, как правильно отладить эту программу и запустить ее. Может ли кто-нибудь пролить свет. Предположим, что отсортировать массив или имена, а затем массив возрастов.Ошибки программы Broken. ОБНОВЛЕННЫЙ КОД
prog.c: In function 'main':
prog.c:24:22: warning: passing argument 1 of 'bubblesortname' from incompatible pointer type
bubblesortname(fullname,age,SIZE);
^
prog.c:9:8: note: expected 'char **' but argument is of type 'char (*)[25]'
void bubblesortname(char *fullname[], int *age, int size);
бесплатных печенья для тех, кто может получить это запустить :) **
#define SIZE 5
#include <stdio.h>
#include <string.h>
#include <stdio.h>
void input(char fullname[][25], int age[]);
void output(char fullname[][25], int age[]);
void bubblesortname(char fullname[][25], int *age, int size);
void bubblesortage(char fullname[], int *age, int size);
int main(int argc, char *argv[])
{
char fullname[SIZE][25];
int age[SIZE];
// promt user for names and ages
input(fullname, age);
//output unsorted names and ages
output(fullname, age);
bubblesortname(fullname,age,SIZE);
output(fullname, age);
//sorts age
bubblesortage(fullname,age,SIZE);
//
output(fullname, age);
return 0;
}
void input(char fullname[][25], int age[])
{
int i;
for (i = 0; i < SIZE; i++)
{
fflush(stdin);
printf("Enter a full name\n");
//scanf("%[\^n]\n", fullname[i]);
fgets (fullname[i],40, stdin);
printf("Enter the age\n");
scanf("%d", &age[i]);
}
}
void output(char fullname[][25], int age[])
{
int i;
for (i = 0; i < SIZE; i++)
printf("%s, %d\n", fullname[i], age[i]);
}//end function
void bubblesortname(char fullname[][], int *age, int size)
{
int temp_age;
char* temp_name;
int j,i;
for (i = 0; i < SIZE - 1; ++i)
{
for (j = 0; i < SIZE - 1; ++j)
{
if (strcmp(fullname[j], fullname[j + 1]) > 0)
{
temp_age = age[i];
age[j] = age[j + 1];
age[j + 1] = temp_age;
temp_name = fullname[j];
fullname[j] = fullname[j + 1];
fullname[j + 1] = temp_name;
}//end if
}//end inner for
}//end for
}//end function
bubblesortage(char fullname[][], int *age, int size)
{
int j,i;
int temp_age;
char* temp_name;
char temp[25];
for (i = 0; i < size - 1; ++i)
{
for (j = 0; j < size - 1; ++j)
{
if (age[j] > age[j + 1])
{
strcpy(temp, fullname[<index1>]);
strcpy(fullname[index1], fullname[index2]);
strcpy(fullname[index2], temp);
temp_age = age[j];
age[j] = age[j + 1];
age[j + 1] = temp_age;
temp_name = fullname[j];
fullname[j] = fullname[j + 1];
fullname[j + 1] = temp_name;
}// end inner for
}// end outer for
}// end function
'void bubblesortname (char fullname [] [25] (или char (* fullname) [25]), int * age (или int age []), int size);' – BLUEPIXY
также 'fgets (fullname [i ], 40, stdin); ': 40 слишком велико. – BLUEPIXY
Подожди, я в замешательстве. Какая разница между двумя? – SaturdaycityEZ