0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
1

удаление списка в с++

24.01.2011, 20:58. Показов 1711. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
всем привет!
Начал работать в консольных приложениях.
Проблема такова: с помощью консоли я создаю список в текстовом документе.
После создания этого списка, с помощью консоли я смог бы этот список подкорректировать, тобишь добавить товар, изменить, удалить.
Пример:
15487 чайник 49,99
14489 телефон 119 99,

так идет лист на сто строк. К примеру у номера 6 упала цена, тогда я вызываю его через консоль и изменяю, или удаляю. Причем удаление или изменении не должно повлиять на другие товары.
Спасибо за ответы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2011, 20:58
Ответы с готовыми решениями:

Написать код программы, выполняющей растяжку списка и вставку, удаление из списка и сжатие списка
Люди ПОМОГИТЕ осталось совсем мало , мне нужна помощь!!! написать код программ: 1) Написать код...

Добавление и удаление элементов списка, очистка списка, просмотр списка
Добрый вечер! помогите пожалуйста с решением не простой задачи. Предусмотреть меню, позволяющее...

Удаление элемента, стоящего посередине списка (если длина списка нечетна)
Написать функцию, которая удаляет из списка элемент, стоящий в середине (удалённый от начала и...

Однонаправленный список. Вывод элементов, списка. Удаление списка.
Создать однонаправленный список натуральных чисел. Найти и вывести элементы списка, кратные 3....

12
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
25.01.2011, 08:36 2
загружаешь весь списов в массив
делаешь что нужно и сохраняешь его обратно
0
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
25.01.2011, 22:49  [ТС] 3
Цитата Сообщение от D@rkD@iver Посмотреть сообщение
загружаешь весь списов в массив
делаешь что нужно и сохраняешь его обратно
а вот здесь не много по подробнее.
ну открыл я к примеру список.
Код
fscanf(text.txt,"%i %s %i", Nr[n],Name[n],Date[n]);
printf(text.txt,"%i %s %i", Nr[n],Name[n],Date[n]");
как мне удалить или поменять что нить из списка?
З.Ы язык с неделю изучаю, так что не будь ко мне слишком строг)
если возможно, объясни наглядным примером как это сделать
0
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
26.01.2011, 07:15 4
C++
1
2
3
4
5
Record a[100];
for (int i=0; i<n; i++)
{
       fscanf(f, "%i %s %i", &a[i].Nr,&a[i].Name,&a[i].Date);
}
потом работаешь с этим массивом изменяешь удаляешь и тд
а потом сохраняешь его обратно
C++
1
2
for (int i=0; i<n; i++)
    fprintf(f, "%i %s %i\n", a[i].Nr,a[i].Name,a[i].Date);
0
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
26.01.2011, 22:02  [ТС] 5
спасибо за ответ)
только у меня появилась неожиданная проблемка.
задумка в данный момент такова, что моя программка состоит из нескольких маленьких программ. Только вот они не хотят запускаться, вот программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
int Zahl;
 
struct area
{
    char Warenbezeichnung[100];
    int Teilenummer, Anzahl, Speicherort; 
}; 
int _tmain(int argc, _TCHAR* argv[])
{
    
    printf("Guten Tag!\n Um Programm zu bedienen müssen sie nur jeweilige Ziffer drücken.\n Neue Liste hinzufügen drücken sie <1> ");
    scanf ("%i",&Zahl);
    switch (Zahl)
    {
    case 1: void WareHinzufügen(); break;
            
    }
    
    return (0);
}
void WareHinzufügen()
{
    FILE*Liste;
    char DateiName[256];
    area Feld[50];
 
    printf("DateiName angeben > ");
    scanf("%s",DateiName);
    
    do
    {
        Liste=fopen("Liste.txt","r+");
        area Nr;
        printf("Warenbezeichnung:  ");
        scanf("%s",Nr.Warenbezeichnung);
        printf("Teilenummer");
        scanf("%i",Nr.Teilenummer);
        printf("Anzahl");
        scanf("%i",Nr.Anzahl);
        fprintf(Liste,"%s %i %i",Nr.Warenbezeichnung,Nr.Teilenummer,Nr.Anzahl);
        fclose(Liste);
 
    } while(1);
 
 
}
после нажатия "1" прога молниеносно закрывается, почему?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.01.2011, 07:02 6
C
1
scanf("%i",Nr.Teilenummer);
C
1
scanf("%i", &Nr.Teilenummer);
и так далее

файл не нужно в цикле открывать
0
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
27.01.2011, 07:58 7
anton88-2006,
char Zahl;
C++
1
2
3
4
5
6
 scanf ("%c",&Zahl);
        switch (Zahl)
        {
        case '1': void WareHinzufьgen(); break;
                        
        }
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
27.01.2011, 08:07 8
Цитата Сообщение от anton88-2006 Посмотреть сообщение
WareHinzufьgen()
Цитата Сообщение от anton88-2006 Посмотреть сообщение
WareHinzufьgen

Не по теме:

там мягкий знак или B?)

0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
27.01.2011, 08:25 9
насчёт int Zahl; там и так работает
0
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
29.01.2011, 20:31  [ТС] 10
спасибо с этой проблемой разобрался)
только в данный момент возник новый вопрос.
после того как я через консоль задал и сохранил текст, консоль должна его обратно считать на экран. У меня почему то считывает только последние строчки, в чем может быть проблема?
Код
void Listeherauslesen()
{	
	FILE*Liste;
	
	char DateiName[256];
	Item Feld[50];
	printf("DateiName angeben > ");
	scanf("%s",DateiName);
	Liste=fopen(DateiName,"r");
	Item Nr;
	int a=1; 
	while (EOF!= fscanf(Liste,"%s %d %d",Feld[a].Warenbezeichnung,&Feld[a].Teilenummer,&Feld[a].Anzahl));
	{	

		printf("\n%s                 %d              %d\n\n",Feld[a].Warenbezeichnung,Feld[a].Teilenummer,Feld[a].Anzahl);
		a=a+1;
	}
	
	
	fclose(Liste);
	printf(" \n");
	scanf("%d",b);
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
30.01.2011, 06:54 11
C++
1
int a=1;
надо с нуля начинать

Цитата Сообщение от anton88-2006
У меня почему то считывает только последние строчки
надо открыть файл после сохранение и посмотреть содержимое
0
0 / 0 / 0
Регистрация: 24.01.2011
Сообщений: 5
30.01.2011, 13:58  [ТС] 12
Цитата Сообщение от accept Посмотреть сообщение
C++
1
int a=1;
надо с нуля начинать


надо открыть файл после сохранение и посмотреть содержимое
"а" назначил с нуля. Получаю все ровно последнюю строчку.
Файл смотрел, сохраняется нормально. Там строчек 10. Пробовал в файле последнюю сроку изменить, на консоль выводится уже измененная строка из файла. Так что прога явно считывает с файла, только последнюю строку(
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
31.01.2011, 05:58 13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    for (int a = 0; a < 50; a++) {
        int retval = fscanf(
            Liste,
            "%s%d%d",
            Feld[a].Warenbezeichnung,
            &Feld[a].Teilenummer,
            &Feld[a].Anzahl
        );
        if (retval != 3) {
            printf("error\n");
            break;
        }
        printf(
            "\n"
            "%s                 "
            "%d              "
            "%d"
            "\n\n",
            Feld[a].Warenbezeichnung,
            Feld[a].Teilenummer,
            Feld[a].Anzahl
        );
    }
0
31.01.2011, 05:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2011, 05:58
Помогаю со студенческими работами здесь

Удаление элементов списка по номерам другого списка
Доброго времени суток! Подскажите функцию удаления элементов списка с порядковыми номерами из...

Создание списка и удаление элеметов этого списка
Доброго времени суток! Прошу помощи реализовать небольшой код jQuery. Необходимо, чтобы после...

Удаление элемента списка/вывод нового списка
В общем, в 3м массиве у меня по идее должен был собраться новый список но выводится он чего-то не...

Удаление объектов из списка и удаление самого объекта
Здраствуйте! Возник такой вопрос, допустим имеется структура данных (неважно, будь то словарь или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru