Народ скидуйте сюда исходники ваших лаб на С вместе с заданиями
Лабы по С
Сообщений 1 страница 4 из 4
Поделиться2Mon:08,October,2007 11:48:54
Закручивание матрици по спирали из центра
#include <stdio.h>
#include <conio.h>
#define Kol 9
void main()
{
int x=4,y=4,n=1,napr=0,l=1,n_done;
int change_length=0;
int mas[Kol][Kol];
char c;
do
{
clrscr();
printf(" Gordienko Roma, KM-61\n Lab N1\n\nPress any key to continue\n\n");
getch();
while(n<=81)
{
n_done=0;
switch (napr)
{
case 0: for(;n_done<l;n_done++,y++)
mas[x][y]=n++;
napr++;
break;
case 1: for(;n_done<l;n_done++,x++)
mas[x][y]=n++;
napr++;
break;
case 2: for(;n_done<l;n_done++,y--)
mas[x][y]=n++;
napr++;
break;
case 3: for(;n_done<l;n_done++,x--)
mas[x][y]=n++;
napr=0;
break;
}
if(change_length)
{
l++;
change_length=0;
}
else change_length=1;
}
for(y=0;y<Kol;y++)
{
for(x=0;x<Kol;x++)
{
printf("%3d ",mas[x][y]);
}
printf("\n");
}
printf("\n\nPovtorit? (y=da)\n\n");
c=getch();
}
while (c=='y');
clrscr();
}
Спасибо Шульцу за идею и пример
Поделиться3Wed:10,October,2007 22:43:31
Заполнить матрицу ЛП, от левого нижнего угла по диагонали: влево - вверх.
Пример 3*3
4 7 9
2 5 8
1 3 6
#include <stdio.h>
#include <conio.h>
#define n 9
int main ()
{
int arr[n][n]; // объявили массив
int i, j;
i = n-1; //инициализируем индексы начальной ячейкой
j = 0;
for (int num = 1; num <= n*n; num++) // основной цикл, заполняющий массив
{
arr[i][j] = num; // заносим число в ячейку массива
// сейчас мы передвинем индексы на следующую ячейку
// нам понадобится пара буферных переменных для грубого хака (см. дальше)
int i0, j0;
i0 = i;
j0 = j;
if ( (i != 0) && (j != 0) ) // если мы не достигли границы ни по одному из индексов
{
i--;
j--;
}
else if ((j == 0) && (i == 0)) // вот здесь - грубый хак на случай, когда мы приходим в клетку 0,0
{
i = n - 2;
j = n - 1;
}
else if (j == 0) // проверяем, не дошли ли мы до границы по j
{
j = n - i0;
i = n - 1;
}
else // if (i == 0) // проверяем, не дошли ли мы до границы по i
{
i = n - 2 - j0;
j = n - 1;
}
}
puts("Result Array:");
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("%4d", arr[i][j]);
}
printf("\n");
}
return 0;
}
Поделиться4Wed:10,October,2007 22:50:31
Лаба-курсовик Работает с динамической памятью+ файлы+указатели.Зацените (Шульс (С))
Авторемонтные мастерские:номер, марка, мощность и цвет автомобиля, ФИО и квалификация механика, тип работ
(извиняйте за коментарии-глюки с кодировкой)
#include <malloc.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
int func_print(); /* ”гЄжЁп ЇҐз вЁ бЇЁбЄ */
int func_input(); /* ”гЄжЁп ўў®¤ бЇЁбЄ */
int func_add(); /* „®Ў ў«ҐЁҐ н«Ґ¬Ґв ў бЇЁб®Є */
int func_delete(); /* “Ёз⮦ҐЁҐ н«Ґ¬Ґв бЇЁбЄ */
int func_change(); /* €§¬ҐҐЁҐ § зҐЁп Ї®«Ґ© н«Ґ¬Ґв бЇЁбЄ */
int func_sort(); /* ”гЄжЁп б®авЁа®ўЄЁ бЇЁбЄ */
int func_save(); /* ”гЄжЁп б®еа ҐЁп бЇЁбЄ ¤ЁбЄҐ */
int func_restore(); /* ЏҐаҐ§ ЇЁбм бЇЁбЄ Ё§ д ©« ў ¤Ё ¬ЁзҐбЄго Ї ¬пвм */
void func_free_list(); /* ”гЄжЁп ®бў®Ў®¦¤ҐЁп ¤Ё ¬ЁзҐбЄ®© Ї ¬пвЁ*/
int get_sort_index(); /* ”гЄжЁп ўлЎ®а бЇ®б®Ў б®авЁа®ўЄЁ */
#define SCREEN_LEN 3
#define FIELD_LEN 24
#define FIELD_NUM 7
char FILE_NAME[80]="";
char *field_name[]={
"Car number",
"Model",
"Power",
"Color",
"Mechanic name",
"Qualification",
"Type of works"
};
/* „«п б®Єа йҐЁп § ЇЁбЁ вЁЇ бвагЄвгал ўўҐ¤Ґ¬ ®ўл© вЁЇ */
typedef struct _serv serv;
/* ЋЇЁб ЁҐ бвагЄвгал */
struct _serv {
char data[FIELD_NUM][FIELD_LEN+1];
serv *next; /* “Є § ⥫м б«Ґ¤гойЁ© н«Ґ¬Ґв */
};
serv *servh = NULL; /* Ќ з «® бЇЁбЄ */
void main()
{
int i;
/* ‘вагЄвга ¬Ґо */
struct{
int op; /* Ќ®¬Ґа ®ЇҐа жЁЁ */
int (*opf)(); /* ”гЄжЁп ®Ўа Ў®вЄЁ */
}
m[9] = {
{'1',func_print},
{'2',func_input},
{'3',func_add},
{'4',func_delete},
{'5',func_change},
{'6',func_sort},
{'7',func_save},
{'8',func_restore},
{'0',NULL}
};
int opcode; /* Љ®¤ ®ЇҐа жЁЁ */
int show_mes=0;
char c;
for ( ; ; )
{
if(show_mes==1)
{
printf("\n\nPress any key to continue...");
fflush(stdin);
getch();
}
clrscr();
printf("========== Dmytro Shylga. Lab 3. =======");
printf("\n1. Print\n"); /* ‚лў®¤ ЇгЄв®ў ¬Ґо нЄа */
printf("2. Input\n");
printf("3. Add\n");
printf("4. Delete\n");
printf("5. Change\n");
printf("6. Sort\n");
printf("7. Save\n");
printf("8. Restore\n");
printf("0. Quit\n");
printf("========================================\n");
printf("Enter operation code > "); /* ‡ Їа®б ўў®¤ ®¬Ґа
ЇгЄв ¤«п ўлЇ®«ҐЁп */
fflush(stdin);
opcode=getchar(); /* ‚ў®¤ ®¬Ґа ЇгЄв */
if (opcode=='0')
{ /* ўл室 Ё§ Їа®Ја ¬¬л, Ґб«Ё ўлЎа QUIT Ё Ґбвм Ї®¤вўҐа¦¤ҐЁҐ */
printf("Do you want to quit? (y/n) ");
fflush(stdin);
c=getch();
if(c=='Y' || c=='y')
{
func_free_list();
exit(0);
}
show_mes=0;
continue;
}
for (i=0; i<10;i++)
{
if (opcode==m[i].op)
{
m[i].opf();
show_mes=1;
}
}
}
}
/****************************************************************/
/**************** ”гЄжЁп ўлў®¤ бЇЁбЄ нЄа ****************/
/****************************************************************/
int func_print()
{
serv *ptr;
int i, j;
if (servh==NULL)
{
printf("\n============ List is empty =============\n");
return 0;
}
for (ptr = servh, i=1; ptr != NULL; ptr = ptr->next, i++)
{
char num[3];
sprintf(num, "%-2d" , i);
for (j = 0; j < FIELD_NUM; j++)
{
printf("%s %-13s> %s\n", j==0?num:" ", field_name[j], ptr->data[j]);
}
if ( (i%SCREEN_LEN)==0)
{
printf("Press any key for continue...\n");
fflush(stdin);
getch();
}
}
printf("\n============ End of list ===============\n");
return 0;
}
/****************************************************************/
/*********** ”гЄжЁп ўў®¤ н«Ґ¬Ґв®ў бЇЁбЄ *********************/
/****************************************************************/
int func_input()
{
int cc;
do
{
printf("\nEnter '*' for end of stream\n");
}
while ( !(cc = func_add()) ); /* ‚맮ў дгЄжЁЁ ¤®Ў ў«ҐЁп */
return 0;
}
/****************************************************************/
/************* „®Ў ў«ҐЁҐ н«Ґ¬Ґв ў бЇЁб®Є *********************/
/****************************************************************/
int func_add()
{
serv *a, *b;
char symbol=0;
int i=1,j;
if (servh != NULL)
for (i++,a=servh; a->next!=NULL; a=a->next,i++);
if(!(b=(serv *)malloc(sizeof(serv))))
{
printf("Not enough dynamic space\n");
return 1;
}
memset((void*)b, 0, sizeof(serv));
for (i=0; i<FIELD_NUM; i++)
{
printf("%-13s > ",field_name[i]);
fflush(stdin);
for (j=0; j<FIELD_LEN; j++)
{
if((symbol=getchar()) == '\n')
break;
if(j==0 && symbol=='*')
{
free(b);
return 2;
}
b->data[i][j]=symbol;
}
}
/* ќ«Ґ¬Ґв ўбв ў«пҐвбп ў Є®Ґж бЇЁбЄ Ё«Ё ў з «®,
Ґб«Ё бЇЁб®Є Їгбв®© */
if (servh==NULL) servh=b;
else a->next=b;
return 0;
}
/*****************************************************************/
/************ ”гЄжЁп б®еа ҐЁп бЇЁбЄ ¤ЁбЄҐ *****************/
/*****************************************************************/
int func_save()
{
FILE *fd;
serv *ptr;
printf("Enter filename > ");
fflush(stdout);
scanf("%s",FILE_NAME);
/* ЋвЄалвЁҐ д ©« § ЇЁбм */
if((fd=fopen(FILE_NAME,"w"))==NULL)
{
printf("Can't save %s file\n", FILE_NAME);
fflush(stdout);
return 0;
}
/* ‡ ЇЁбм ў д ©« */
for (ptr=servh; ptr!=NULL; ptr=ptr->next)
{
fwrite(ptr->data, FIELD_NUM, FIELD_LEN+1, fd);
}
printf("\n============= File saved ============\n");
fclose(fd); /* ‡ ЄалвЁҐ д ©« */
return 0;
}
/****************************************************************/
/****** ЏҐаҐ§ ЇЁбм бЇЁбЄ Ё§ д ©« ў ¤Ё ¬ЁзҐбЄго Ї ¬пвм ********/
/****************************************************************/
int func_restore()
{
int ret_code = 1;
FILE *fd;
serv *ptr, *curr_ptr;
/* ЋвЄалвЁҐ д ©« ¤«п з⥨п, Ґб«Ё д ©« Ґ ©¤Ґ - ўлў®¤
ᮮ⢥вбвўго饣® б®®ЎйҐЁп */
printf("Enter filename > ");
scanf("%s",FILE_NAME);
if ((fd = fopen(FILE_NAME, "r"))==NULL)
{
printf("File '%s' not found\n",FILE_NAME);
return 0;
}
func_free_list();
do
{
if ((ptr=(serv *)malloc(sizeof(serv))) == NULL)
{
printf("Not enough dynamic space\n");
break;
}
memset((void*)ptr, 0, sizeof(serv));
if (fread(ptr->data, FIELD_NUM, FIELD_LEN+1, fd) > 0)
{
if (servh==NULL) servh = ptr;
else curr_ptr->next = ptr;
curr_ptr = ptr;
}
else
{
free(ptr);
ret_code = 0;
printf("\n============= File restored ============\n");
break;
}
} while ( 1 );
fclose(fd); /* ‡ ЄалвЁҐ д ©« */
return ret_code;
}
/*****************************************************************/
/*************** ”гЄжЁп б®авЁа®ўЄЁ бЇЁбЄ ***********************/
/*****************************************************************/
int func_sort()
{
int n;
int j;
serv *a, *b, *c;
/* …б«Ё бЇЁб®Є Їгбв®© Ё«Ё ў Ґ¬ ®¤Ё н«Ґ¬Ґв,
в® ўл室 Ё§ дгЄжЁЁ */
if ((servh==NULL)||(servh->next==NULL)) return 0;
if ((j=get_sort_index()) == -1 ) return 0;
/* ‘®авЁа®ўЄ бЇЁбЄ ¬Ґв®¤®¬ "Їг§ламЄ " */
for (n=1; n; )
{
n=0;
for (a=servh, b=servh->next; b!=NULL; )
{
if (strcmp(a->data[j],b->data[j])>0)
{
a->next=b->next; b->next=a;
if (a==servh) servh=b;
else c->next=b;
c=b; b=a->next;
n=1;
}
else
{
c=a; a=b; b=b->next;
}
}
}
return 0;
}
/*****************************************************************/
/************ ‚ў®¤ ®¬Ґа н«Ґ¬Ґв *******************************/
/*****************************************************************/
int get_ln ()
{
int ln;
printf("Enter line number >");
do
{
scanf("%d",&ln);
if ( ln < 1)
{
printf("\nIllegal line number. Try again >");
ln=0;
}
} while (!ln);
return --ln;
}
/*****************************************************************/
/************* “Ёз⮦ҐЁҐ н«Ґ¬Ґв бЇЁбЄ ***********************/
/*****************************************************************/
int func_delete ()
{
int ln;
serv *a, *b;
if (servh==NULL)
printf("\n============ List is empty ============\n");
else
{
ln = get_ln();
if (ln==0)
{
a=servh; servh=a->next; free(a);
printf("\n============ Element was deleted ============\n");
}
else
{
for(a=servh, --ln; ln && (a!=NULL); a=a->next, ln--);
if (a!=NULL)
{
if ((b=a->next)!=NULL)
{
a->next=b->next; free(b);
printf("\n============ Element was deleted ============\n");
}
}
}
}
return 0;
}
/*****************************************************************/
/********** €§¬ҐҐЁҐ § зҐЁп Ї®«Ґ© н«Ґ¬Ґв бЇЁбЄ *************/
/*****************************************************************/
int func_change()
{
int ln, i, j, symbol;
serv *a;
ln = get_ln(); /* ‚ў®¤ ®¬Ґа н«Ґ¬Ґв */
for ( a = servh; ln && a != NULL; ln--, a = a->next);
if (a == NULL) return 0;
/* ‚лў®¤ бв але Ё ўў®¤ ®ўле § 票© */
/* ‡ ЇЁбм ®ўле § 票© ў бЇЁб®Є */
for (i=0;i<FIELD_NUM;i++)
{
printf("Old %-13s '%s'. New > ",field_name[i], a->data[i]);
memset((void*)a->data[i], 0, sizeof(a->data[i]));
fflush(stdout);
fflush(stdin);
for (j=0; j<FIELD_LEN; j++)
{
if((symbol=getchar()) == '\n')
break;
a->data[i][j]=symbol;
}
fflush(stdin);
}
return 0;
}
/****************************************************************/
/********* ”гЄжЁп ®бў®Ў®¦¤ҐЁп ¤Ё ¬ЁзҐбЄ®© Ї ¬пвЁ *************/
/****************************************************************/
void func_free_list()
{
serv *ptr, *ptr_next;
for(ptr = servh; ptr != NULL; )
{
ptr_next = ptr->next;
free(ptr);
ptr = ptr_next;
}
servh = NULL;
}
/****************************************************************/
/************** ”гЄжЁп ўлЎ®а бЇ®б®Ў б®авЁа®ўЄЁ ***************/
/****************************************************************/
int get_sort_index()
{
int i, num;
for ( ; ; )
{
clrscr();
printf("\n============= Sort by ==================\n");
for (i=0; i<FIELD_NUM; i++)
{
printf("%d. %s\n", i+1, field_name[i]);
}
printf("\nEnter field number > ");
fflush(stdout);
fflush(stdin);
num = getchar(); /* ‚ў®¤ ®¬Ґа ЇгЄв */
num -= 060;
if( num < 1 || num > FIELD_NUM ) continue;
break;
}
printf("\n=========== List sorted ================\n");
return --num;
}
Похожие темы
Лабы по Ассемблеру | Ассемблер | Sun:23,December,2007 |
Лаба) | Java | Wed:10,October,2007 |
Ахтунг какойто | Общение о разном | Thu:02,October,2008 |
Форум о програмировании для всех | Новости и события форума | Mon:24,September,2007 |
Заполнить матрицу ЛП, от левого нижнего угла по диагонали: влево - вве | С++ | Tue:02,October,2007 |