Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 30.04.2009, 19:42   #11 (permalink)
Le}{a
Специалист
 
Аватар для Le}{a
 
Регистрация: 06.03.2007
Сообщений: 2,743
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 608
По умолчанию

Цитата:
Сообщение от бородёнок Посмотреть сообщение
сделайте плиз прогу на *dev cpp* или на *delphi*... я в долгу не останусь...

задача:
Сортировка строк текста считанных с stdin. Сохранить в динамической памяти, массив. метод сортировки-выборкой. Результат на stdout.
тогда это будет первый встретившийся в моей жизни хирург(подставить любое другое)-программер. был конечно случай с макроассемблером который преподавали филфаку, но это была 1 лекция и очень нетрезвый препод, просто по пьяни спутал аудитории
Le}{a вне форума   Ответить с цитированием

Старый 30.04.2009, 19:42
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Давайте обратим внимание на схожие темы

Помогите с Паскалем
SharpDevelop помогите дописать задачу. Завтра экзамен.
Программка на Pascal'e ABC. Помогите пожалуйста, завтра сдавать.

Старый 30.04.2009, 19:53   #12 (permalink)
blake
Новичок
 
Регистрация: 27.04.2009
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ребят я стебанул просто) Ибо щас тут половина тем мои однокурсники
blake вне форума   Ответить с цитированием
Старый 30.04.2009, 20:04   #13 (permalink)
Matrix
IT-Specialist
 
Аватар для Matrix
 
Регистрация: 12.04.2007
Сообщений: 2,906
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1845
По умолчанию

Цитата:
Сообщение от Le}{a Посмотреть сообщение
был конечно случай с макроассемблером который преподавали филфаку, но это была 1 лекция и очень нетрезвый препод, просто по пьяни спутал аудитории
интересный случай
Matrix вне форума   Ответить с цитированием
Старый 30.04.2009, 20:12   #14 (permalink)
Le}{a
Специалист
 
Аватар для Le}{a
 
Регистрация: 06.03.2007
Сообщений: 2,743
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 608
По умолчанию

Цитата:
Сообщение от blake Посмотреть сообщение
Ребят я стебанул просто) Ибо щас тут половина тем мои однокурсники
ну тогда перманент по айпи и стебись потихому
Le}{a вне форума   Ответить с цитированием
Старый 01.05.2009, 00:37   #15 (permalink)
csbwalker
Member
 
Аватар для csbwalker
 
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
По умолчанию

Вот код, комба из двух элементарнейших алгоритмов -
запись в динамический массив (один из вариантов)
сортировка массива (на википедии по "Сортировка выбором" выводит пример алгоритма для целых чисел, адаптируется путем замены "<" на "strcmp")

Собственно код:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char **Array;
int Count = 0;

// Функция добавления элемента в массив
void addElement(char *str)
{
	// Увеличиваем счетчик размера массива
	Count++;

	// Создаем или увеличиваем массив строк	
	if (Array == NULL)
		Array = malloc(sizeof(char *));
	else
		Array = realloc(Array, sizeof(char *) * Count);

	// Добавляем элемент в массив строк
	Array[Count - 1] = calloc(strlen(str) + 1, sizeof(char));

	// Записываем строку в массив
	strcpy(Array[Count - 1], str);
}

// Функция, меняющая две строки местами
void swapElements(int a, int b)
{
	char *tmp = Array[a];
	Array[a] = Array[b];
	Array[b] = tmp;
}

// Функция сортировки
void sortElements()
{
int i, min, j;

	for (i = 0; i < Count - 1; i++)
	{
		/* выбираем начальное значение мин. индекса */
        	min = i;

		/* поиск минимального индекса элемента */
		for (j = i + 1; j < Count; j++)
			if (strcmp(Array[j], Array[min]) < 0)
				min = j;

		/* замена значений местами */
		swapElements(i, min);
	}
}

// Запрос ввода и ввод из stdin следующей строки
int enterElement()
{
char buffer[71];

	printf( "Enter new string, null-length string for sort and stop:\n" );

	gets(buffer);

	if (strlen(buffer) == 0)
		return 0;

	addElement(buffer);

	return 1;
}

// Вывод содержимого массива на stdout
void printElements()
{
int i;
	for(i = 0; i < Count; i++)
		printf( "  String %02d: %s\n", i, Array[i] );
}

// Главная функция
int main()
{
	// Вводим набор строк
	while (enterElement());

	// Выводим массив до сортировки
	printf( "Before sort:\n" );
	printElements();

	// Сортируем
	sortElements();

	// Выводим массив после сортировки
	printf( "After sort:\n" );
	printElements();
	
	return 0;
}
P.S. по поводу хакеров
1. ну тут отнюдь не все хакеры) даже совсем-отнюдь-не все))))
2. информация даром и для всех - это хорошо, а вот "сделайте плиз прогу" это уже не для всех и не всегда, попадаются правда фрики вроде меня))

P.P.S. надеюсь код пригодится

Цитата:
Сообщение от blake Посмотреть сообщение
Ребят я стебанул просто) Ибо щас тут половина тем мои однокурсники
А вот это ты зря, т.к. я подумал (да и многие другие я думаю), что раз ты за $$ делаешь, то и твоя тема про задачу с Crc32 уже не актуальна... Соответственно помощи ты по большей части из-за этого и не дождался)) (ИМХО)

Цитата:
Сообщение от Le}{a Посмотреть сообщение
был конечно случай с макроассемблером который преподавали филфаку, но это была 1 лекция и очень нетрезвый препод, просто по пьяни спутал аудитории
Действительно забавно)))

Последний раз редактировалось csbwalker; 01.05.2009 в 00:43
csbwalker вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 01.05.2009, 13:24   #16 (permalink)
бородёнок
Новичок
 
Регистрация: 28.04.2009
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

огромное спасибо csbwalker, очень помог
бородёнок вне форума   Ответить с цитированием
Старый 25.05.2009, 21:27   #17 (permalink)
бородёнок
Новичок
 
Регистрация: 28.04.2009
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

а если немного изменить условия:
Строки текста, считанных с stdin, сохранить в двусвязный список, массив. Результат на stdout, реверсировать на выводе.
заранее благодарен.
бородёнок вне форума   Ответить с цитированием
Старый 26.05.2009, 12:29   #18 (permalink)
csbwalker
Member
 
Аватар для csbwalker
 
Регистрация: 03.03.2009
Сообщений: 87
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 187
По умолчанию

Цитата:
Сообщение от бородёнок Посмотреть сообщение
а если немного изменить условия:
Строки текста, считанных с stdin, сохранить в двусвязный список, массив. Результат на stdout, реверсировать на выводе.
заранее благодарен.
Постарайся, пожалуйста, больше так не делать (одинаковые посты в разных темах), т.к. очень сложно определить при таком подходе - решена проблема или нет, ок??

Вот код:
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct listNode
{
    char *str;
    
    struct listNode *before;
    struct listNode *after;
};

void listInit(struct listNode *node)
{
    node->str = NULL;
    node->before = NULL;
    node->after = NULL;
}

int listPush(struct listNode *node, char *str)
{
    /* Переходим к последнему элементу */
    while(node->after != NULL)
        node = node->after;

    /* Если в элементе не записана строка - то записываем в него, иначе -
       создаём новый элемент */
    if(node->str != NULL)
    {
        /* Выделяем память под новый элемент, записываем указатель на него */
        node->after = malloc(sizeof(struct listNode));
        if(node->after == NULL)
            return 0;
    
        /* Инициализируем новый элемент */
        listInit(node->after);
        /* Записываем в новый элемент указатель на тот, который ранее был последним */
        node->after->before = node;
    
        /* Переключаем node на новый элемент */
        node = node->after;
    }

    /* Выделяем в элементе память под строку */
    node->str = malloc(sizeof(char)*(strlen(str) + 1));
    if(node->str == NULL)
        return 0;
    
    /* Записываем строку в элемент */
    strcpy(node->str, str);
    
    return 1;
}

void listReversePrint(struct listNode *node)
{
    /* Переходим к последнему элементу */
    while(node->after != NULL)
        node = node->after;
    
    /* Выводим все элементы в обратном порядке */
    while(node != NULL)
    {
        if(node->str != NULL)
            printf("STRING: <%s>\n", node->str);
        node = node->before;
    }
}

int main()
{
struct listNode *first;
char str[81];

    /* Создаём корневой элемент списка */
    first = malloc(sizeof(struct listNode));
    if(first == NULL)
    {
        printf("Error!\n");
        return 1;
    }
    listInit(first);
    
    /* Цикл запроса строк */
    do
    {
        printf("Enter string, or '*' to exit: ");
        scanf("%s", str);
        
        if((strlen(str) == 1) && (str[0] == '*'))
            break;
        
    } while(listPush(first, str));
    
    /* Выводим результат - список в обратном порядке */
    printf("Nodes (reverse):\n");
    listReversePrint(first);
    return 0;    
}
csbwalker вне форума   Ответить с цитированием
Старый 26.05.2009, 14:25   #19 (permalink)
бородёнок
Новичок
 
Регистрация: 28.04.2009
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо, csbwalker, на счет постов больше так не буду с меня пиво
бородёнок вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 10:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.