Форум программистов, компьютерный форум CyberForum.ru

Списки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Рекурсивные алгоритмы. Создание рекурсивной функции. http://www.cyberforum.ru/cpp-beginners/thread585470.html
Написать программу и рекурсивную функцию для вычисления значения суммы бесконечного ряда с заданной точностью. На печать вывести значение суммы и число членов ряда, вошедших в сумму. Вычислить значение ряда, используя заданную формулу или воспользовавшись библиотечной функцией. Пожаалуйста пожалуйста помогиитее))заранее спасибо
C++ Перечисления Добрый день, проблема в том чтобы использовать запись вида enum values { 2,3,4,5,6,7,8,9,10,J,Q,K,A } компилятор ругается на числа. Как будет правильно задать конструкцию такого вида? http://www.cyberforum.ru/cpp-beginners/thread585451.html
В строке текста удалить все слова, начинающиеся и заканчивающиеся на один и тот же символ C++
В строке текста удалить все слова, начинающиеся и заканчивающиеся на один и тот же символ
C++ Найти все простые числа в массиве и упорядочить их по возрастанию
Найти все простые числа в массиве и упорядочить их по возрастанию
C++ Подскажите какую нужно подключить библиотеку http://www.cyberforum.ru/cpp-beginners/thread585425.html
я использую функцию bzero( (void *)board, MAX_LENGTH*MAX_LENGTH); написанно в книге, что это базовая функция очистки памяти. Но вылетает ошибка. Я думаю что не подключенна какая то библиотека....подскажите, что делать????
C++ Процедура в С++ Здравствуйте , госопода. Дано условие задачи : 3. Даны действительные числа a, b, c. Получить: С = max(a,a+b)+min(a,b+c)/1+max(a+bc , b+ac ,c+ab) В программе обязательно использовать одну процедуру. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> bool error; float calc_h (float a, float b, float c) подробнее

Показать сообщение отдельно
winson22
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 19
24.05.2012, 23:40     Списки
Добрый день : (Пишу на Dev-c++)
Задание . Сформировать стек циклического списка и удаляет из него стул заданного материала и максимальной высотой..

Итак, стул заданного материала удаляет, но не получаеться написать цикл чтобы проверял на максимальную высоту.

Читаю два файла :
vhodnoi.txt(

red
100
moskow
gazprom
ivanov
iron
black
200
moskow
gazprom
ivanov
tree
red
300
moskow
gazprom
ivanov
steel
green
400
moskow
gazprom
ivanov
tree
white
500
moskow
gazprom
ivanov
iron
)

и записываю всё в другой файл

вот мой код:

#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>

#define Lmax 20
#define STUL struct stu
#define CLR while (fgetc (f) != '\n')

STUL
{
char cvet[Lmax];
int visota;
struct
{
char city[Lmax];
char zavod[Lmax];
char fam[Lmax];
}
izgot;
char mater[Lmax];
STUL *next; /* поле указателя на следующую запись */
};


/* прототипы функций */
STUL *stack (char name[]);
void vivod (STUL* stack, char name[]);
STUL* del (STUL* stack);


/* формирование стека стульев. на выходе - имя входного файла */
STUL *stack (char name[])
{
STUL *tek, *stack = NULL; /* изначально список пуст */
FILE *f;

f = fopen (name, "r");
if (f == 0)
puts ("File not found!!!");
else
{
while (! feof (f))
{
/* выделение памяти для новой записи */
tek = (STUL*)malloc (sizeof (STUL));
if (fgets (tek->cvet, Lmax, f))
{
/* другой способ замены '\n' на '\0' */
tek->cvet[strlen (tek->cvet) - 1] = '\0';
fscanf (f, "%d", &tek->visota);
CLR;
fgets (tek->izgot.city, Lmax, f);
tek->izgot.city[strlen (tek->izgot.city) - 1] = '\0';
fgets (tek->izgot.zavod, Lmax, f);
tek->izgot.zavod[strlen (tek->izgot.zavod) - 1] = '\0';
fgets (tek->izgot.fam, Lmax, f);
tek->izgot.fam[strlen (tek->izgot.fam) - 1] = '\0';
fgets (tek->mater, Lmax, f);
tek->mater[strlen (tek->mater) - 1] = '\0';
tek->next = stack;
stack = tek;
}
}
free (tek);
}
return (stack); /* возвращается указатель на вершину стека */
}

/* вывод списка в файл */
void vivod (STUL* stack, char name[])
{
FILE *f2 = fopen (name, "w");

if (! stack)
{
fprintf (f2, "Spisok posle ydalenija pust \n");
}
else
{
fprintf (f2, "Spisok posle udalenija \n");
fprintf (f2, "\n");
/* вывод списка в файл */
while (stack != NULL)
{
fprintf (f2, "cvet:%s\n", stack->cvet);
fprintf (f2, "visota:%d\n", stack->visota);
fprintf (f2, "city:%s\n", stack->izgot.city);
fprintf (f2, "zavod:%s\n", stack->izgot.zavod);
fprintf (f2, "fam:%s\n", stack->izgot.fam);
fprintf (f2, "mater:%s\n", stack->mater);
stack = stack->next; /* движение по списку */
}
}
fclose (f2);
}

/* удаление стульев */
STUL* del (STUL* stack)
{/* результат - указатель на вершину измененного списка */
STUL *tek, *pred; /* указатели на текущую и предшествующую запись */
char mt[Lmax]; /* заданный материал */
int MIN;
printf ("Vvedite material: ");
gets (mt);
tek = pred = stack;
while (stack && tek) /* пока список не кончился и не удален полностью */


if (strcmp (mt, tek->mater) == 0)

{
if (tek == stack) /* удаление первой записи */
{
stack = stack->next;
free (tek);
tek = pred = stack;
}
else /* удаление элемента из середины */
{
pred->next = tek->next;
free (tek);
tek = pred->next;
}
}
else
{
pred = tek;
tek = tek->next;
}
return (stack);
}


main ()
{
STUL *first; /* указатель на вершину стека */
char name1[Lmax], name2[Lmax]; /* имена входного и выходного файлов */


printf ("Vvedite imja vxodnogo faila: ");
gets (name1);
printf ("Vvedite imja vixodnogo faila: ");
gets (name2);
first = stack (name1); /* формирование стека */
if (first != NULL)
{
first = del (first); /* удаление записей */
vivod (first, name2); /* вывод результатов в файл */
printf ("Rezultat naxoditsja v faile %s\n", name2);
}
getch();
}

Добавлено через 6 часов 53 минуты
Цитата Сообщение от winson22 Посмотреть сообщение
Добрый день : (Пишу на Dev-c++)
Задание . Сформировать стек циклического списка и удаляет из него стул заданного материала и максимальной высотой..

Итак, стул заданного материала удаляет, но не получаеться написать цикл чтобы проверял на максимальную высоту.

Читаю два файла :
vhodnoi.txt(

red
100
moskow
gazprom
ivanov
iron
black
200
moskow
gazprom
ivanov
tree
red
300
moskow
gazprom
ivanov
steel
green
400
moskow
gazprom
ivanov
tree
white
500
moskow
gazprom
ivanov
iron
)

и записываю всё в другой файл

вот мой код:

#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>

#define Lmax 20
#define STUL struct stu
#define CLR while (fgetc (f) != '\n')

STUL
{
char cvet[Lmax];
int visota;
struct
{
char city[Lmax];
char zavod[Lmax];
char fam[Lmax];
}
izgot;
char mater[Lmax];
STUL *next; /* поле указателя на следующую запись */
};


/* прототипы функций */
STUL *stack (char name[]);
void vivod (STUL* stack, char name[]);
STUL* del (STUL* stack);


/* формирование стека стульев. на выходе - имя входного файла */
STUL *stack (char name[])
{
STUL *tek, *stack = NULL; /* изначально список пуст */
FILE *f;

f = fopen (name, "r");
if (f == 0)
puts ("File not found!!!");
else
{
while (! feof (f))
{
/* выделение памяти для новой записи */
tek = (STUL*)malloc (sizeof (STUL));
if (fgets (tek->cvet, Lmax, f))
{
/* другой способ замены '\n' на '\0' */
tek->cvet[strlen (tek->cvet) - 1] = '\0';
fscanf (f, "%d", &tek->visota);
CLR;
fgets (tek->izgot.city, Lmax, f);
tek->izgot.city[strlen (tek->izgot.city) - 1] = '\0';
fgets (tek->izgot.zavod, Lmax, f);
tek->izgot.zavod[strlen (tek->izgot.zavod) - 1] = '\0';
fgets (tek->izgot.fam, Lmax, f);
tek->izgot.fam[strlen (tek->izgot.fam) - 1] = '\0';
fgets (tek->mater, Lmax, f);
tek->mater[strlen (tek->mater) - 1] = '\0';
tek->next = stack;
stack = tek;
}
}
free (tek);
}
return (stack); /* возвращается указатель на вершину стека */
}

/* вывод списка в файл */
void vivod (STUL* stack, char name[])
{
FILE *f2 = fopen (name, "w");

if (! stack)
{
fprintf (f2, "Spisok posle ydalenija pust \n");
}
else
{
fprintf (f2, "Spisok posle udalenija \n");
fprintf (f2, "\n");
/* вывод списка в файл */
while (stack != NULL)
{
fprintf (f2, "cvet:%s\n", stack->cvet);
fprintf (f2, "visota:%d\n", stack->visota);
fprintf (f2, "city:%s\n", stack->izgot.city);
fprintf (f2, "zavod:%s\n", stack->izgot.zavod);
fprintf (f2, "fam:%s\n", stack->izgot.fam);
fprintf (f2, "mater:%s\n", stack->mater);
stack = stack->next; /* движение по списку */
}
}
fclose (f2);
}

/* удаление стульев */
STUL* del (STUL* stack)
{/* результат - указатель на вершину измененного списка */
STUL *tek, *pred; /* указатели на текущую и предшествующую запись */
char mt[Lmax]; /* заданный материал */
int MIN;
printf ("Vvedite material: ");
gets (mt);
tek = pred = stack;
while (stack && tek) /* пока список не кончился и не удален полностью */


if (strcmp (mt, tek->mater) == 0)

{
if (tek == stack) /* удаление первой записи */
{
stack = stack->next;
free (tek);
tek = pred = stack;
}
else /* удаление элемента из середины */
{
pred->next = tek->next;
free (tek);
tek = pred->next;
}
}
else
{
pred = tek;
tek = tek->next;
}
return (stack);
}


main ()
{
STUL *first; /* указатель на вершину стека */
char name1[Lmax], name2[Lmax]; /* имена входного и выходного файлов */


printf ("Vvedite imja vxodnogo faila: ");
gets (name1);
printf ("Vvedite imja vixodnogo faila: ");
gets (name2);
first = stack (name1); /* формирование стека */
if (first != NULL)
{
first = del (first); /* удаление записей */
vivod (first, name2); /* вывод результатов в файл */
printf ("Rezultat naxoditsja v faile %s\n", name2);
}
getch();
}
++++++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru