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

Список - C++

Восстановить пароль Регистрация
 
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
20.04.2010, 18:27     Список #1
Написать программу на Си, которая инвертирует список из целых чисел. Числа читаються из текстового файла и результат выводиться на экран!

ПОМОГИТЕ ПЛИИИЗ! ЗА РАНЕЕ СПАСИБО!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2010, 18:27     Список
Посмотрите здесь:

C++ std::sort. Как сортировать список? (список указателей на объект)
Список: связный список, в котором информация о книгах сортируется по убыванию стоимости. C++
C++ 3 класса: список, стек(как список), очередь(как список)
list. Cоздать список из результатов(с массивами), а потом просмотреть весь список C++
C++ создать список л3 из элементов входящих и в список л1 и в список л2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.04.2010, 20:15     Список #2
Цитата Сообщение от Orlanxxx Посмотреть сообщение
инвертирует список из целых чисел
В каком смысле? числа из файла от последнего к первому выводит, или цифры в числах задом на перёд меняет?
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
21.04.2010, 20:17  [ТС]     Список #3
Цитата Сообщение от easybudda Посмотреть сообщение
В каком смысле? числа из файла от последнего к первому выводит, или цифры в числах задом на перёд меняет?
К примеру в файле числа 12345, а нам нужно в таком случае вывести 54321!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.04.2010, 20:26     Список #4
1. тогда не числа, а цифры из файла.
2. нужно проверять, что там кроме цифр ничего нет?
3. если файл содержит только идущие подряд цифры и сам не длиннее 2 гигов, то проще его в одну большую строку скопировать и задом на перёд её вывести...
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
21.04.2010, 20:29  [ТС]     Список #5
Цитата Сообщение от easybudda Посмотреть сообщение
1. тогда не числа, а цифры из файла.
2. нужно проверять, что там кроме цифр ничего нет?
3. если файл содержит только идущие подряд цифры и сам не длиннее 2 гигов, то проще его в одну большую строку скопировать и задом на перёд её вывести...
Надо проверять что бы числа были обязательно целыми!!!! Ну попробуй так плиииз и кинь текст проги!!! Я чет не догоняюю что ты хочешь... Точнее как это сделать! Попробуй пожалуйста!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.04.2010, 21:10     Список #6
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define FNAME "numbers.txt"
 
int main(void){
    FILE *f;
    char *buf, *p;
    long len;
 
    if ( ( f = fopen(FNAME, "rb") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    fseek(f, 0, SEEK_END);
    len = ftell(f);
    if ( len < 1 ){
        perror("bad file");
        exit(1);
    }
    rewind(f);
 
    if ( ( buf = (char*)malloc(len + 1) ) == NULL ){
        perror("malloc");
        exit(1);
    }
    if ( fread(buf, 1, len, f) != len ){
        perror("fread");
        exit(1);
    }
    fclose(f);
    buf[len] = '\0';
 
    for ( p = buf; *p; ++p ){
        if ( !isdigit(*p) && !isspace(*p) ){
            fprintf(stderr, "AHTUNG! Niht das zifra! - %c\n", *p);
            exit(1);
        }
    }
    for ( --p; p >= buf; --p )
        printf("%c", *p);
    printf("\n");
 
    exit(0);
}

Не по теме:

Цитата Сообщение от Orlanxxx Посмотреть сообщение
Я чет не догоняюю что ты хочешь...
Виллу хочу на Канарах. Посодействуешь?

Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
22.04.2010, 17:48  [ТС]     Список #7
Цитата Сообщение от easybudda Посмотреть сообщение
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
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define FNAME "numbers.txt"
 
int main(void){
    FILE *f;
    char *buf, *p;
    long len;
 
    if ( ( f = fopen(FNAME, "rb") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    fseek(f, 0, SEEK_END);
    len = ftell(f);
    if ( len < 1 ){
        perror("bad file");
        exit(1);
    }
    rewind(f);
 
    if ( ( buf = (char*)malloc(len + 1) ) == NULL ){
        perror("malloc");
        exit(1);
    }
    if ( fread(buf, 1, len, f) != len ){
        perror("fread");
        exit(1);
    }
    fclose(f);
    buf[len] = '\0';
 
    for ( p = buf; *p; ++p ){
        if ( !isdigit(*p) && !isspace(*p) ){
            fprintf(stderr, "AHTUNG! Niht das zifra! - %c\n", *p);
            exit(1);
        }
    }
    for ( --p; p >= buf; --p )
        printf("%c", *p);
    printf("\n");
 
    exit(0);
}

Не по теме:


Виллу хочу на Канарах. Посодействуешь?

Ахах XD рад бы да у самого одна осталась)))
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
28.04.2010, 14:03  [ТС]     Список #8
easybudda, можешь помочь? ТУт чутка не так, она у тебя берет и все переварачивает!!! К примеру в тексте 1 2 3 4 5 и она выдает 5 4 3 2 1! Это хорошо, но вот 12 23 34 она выдает 43 32 21, а НАДО что бы 34 23 12!!! Помоги плыЗ)
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.04.2010, 16:14     Список #9
Цитата Сообщение от Orlanxxx Посмотреть сообщение
ТУт чутка не так, она у тебя берет и все переварачивает!
Так я ж тебя два раза переспрашивал! Диржы!
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define FNAME "numbers.txt"
 
void reverse_buf(char* buf, size_t cnt){
    char *pHead, *pTail;
    char tmp;
    for ( pHead = buf, pTail = buf + cnt - 1; pHead < pTail; ++pHead, --pTail ){
        tmp = *pHead;
        *pHead = *pTail;
        *pTail = tmp;
    }
}
 
int main(void){
    FILE *f;
    char *buf, *p, *pStartNum;
    long len;
    int flag;
 
    if ( ( f = fopen(FNAME, "rb") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    fseek(f, 0, SEEK_END);
    len = ftell(f);
    if ( len < 1 ){
        perror("bad file");
        exit(1);
    }
    rewind(f);
 
    if ( ( buf = (char*)malloc(len + 1) ) == NULL ){
        perror("malloc");
        exit(1);
    }
    if ( fread(buf, 1, len, f) != len ){
        perror("fread");
        exit(1);
    }
    fclose(f);
    buf[len] = '\0';
 
    flag = 0;
    for ( p = buf; *p; ++p ){
        if ( isdigit(*p) ){
            if ( !flag ){
                flag = 1;
                pStartNum = p;
            }
        }
        else if ( isspace(*p) ){
            if ( flag ){
                reverse_buf(pStartNum, p - pStartNum);
                flag = 0;
            }
        }
        else {
            fprintf(stderr, "Invalid symbol - '%c'!\n", *p);
            exit(1);
        }
    }
 
    printf("%s\n", buf);
 
    free(buf);
    exit(0);
}
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
28.04.2010, 17:28  [ТС]     Список #10
Цитата Сообщение от easybudda Посмотреть сообщение
Так я ж тебя два раза переспрашивал! Диржы!
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
 
#define FNAME "numbers.txt"
 
void reverse_buf(char* buf, size_t cnt){
    char *pHead, *pTail;
    char tmp;
    for ( pHead = buf, pTail = buf + cnt - 1; pHead < pTail; ++pHead, --pTail ){
        tmp = *pHead;
        *pHead = *pTail;
        *pTail = tmp;
    }
}
 
int main(void){
    FILE *f;
    char *buf, *p, *pStartNum;
    long len;
    int flag;
 
    if ( ( f = fopen(FNAME, "rb") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    fseek(f, 0, SEEK_END);
    len = ftell(f);
    if ( len < 1 ){
        perror("bad file");
        exit(1);
    }
    rewind(f);
 
    if ( ( buf = (char*)malloc(len + 1) ) == NULL ){
        perror("malloc");
        exit(1);
    }
    if ( fread(buf, 1, len, f) != len ){
        perror("fread");
        exit(1);
    }
    fclose(f);
    buf[len] = '\0';
 
    flag = 0;
    for ( p = buf; *p; ++p ){
        if ( isdigit(*p) ){
            if ( !flag ){
                flag = 1;
                pStartNum = p;
            }
        }
        else if ( isspace(*p) ){
            if ( flag ){
                reverse_buf(pStartNum, p - pStartNum);
                flag = 0;
            }
        }
        else {
            fprintf(stderr, "Invalid symbol - '%c'!\n", *p);
            exit(1);
        }
    }
 
    printf("%s\n", buf);
 
    free(buf);
    exit(0);
}

Спасиб я наверн тебя не понимал =] С меня вилла на Канарах))

Добавлено через 4 минуты

Но тока она что-то не инвертирует((( Просто выдает числа!!!
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.04.2010, 18:03     Список #11
Цитата Сообщение от Orlanxxx Посмотреть сообщение
Но тока она что-то не инвертирует
пустую строку в конце файла добавь
Список
ну или отслеживай ситуацию, когда строка кончилась, а последнее число в ней ещё не обработано
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
28.04.2010, 18:12  [ТС]     Список #12
Цитата Сообщение от easybudda Посмотреть сообщение
пустую строку в конце файла добавь
Вложение 28279
ну или отслеживай ситуацию, когда строка кончилась, а последнее число в ней ещё не обработано
Спасиб

Добавлено через 7 минут
Цитата Сообщение от easybudda Посмотреть сообщение
пустую строку в конце файла добавь
Вложение 28279
ну или отслеживай ситуацию, когда строка кончилась, а последнее число в ней ещё не обработано
ЧТо-то я ничего не понял.... Что сделать то надо!? Я добавил строчку в коец а толку нет! Как отслеживать?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.04.2010, 18:24     Список #13
Orlanxxx, что-то не так делаешь... Входной файл покажи.
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
28.04.2010, 18:27  [ТС]     Список #14
Цитата Сообщение от easybudda Посмотреть сообщение
пустую строку в конце файла добавь
Вложение 28279
ну или отслеживай ситуацию, когда строка кончилась, а последнее число в ней ещё не обработано
Тут не так что то ввожу в файл чила 1 2 10 20 а он мне 1 2 01 20!!! НЕ ТАК ЧТО ТО!!! ДОЛЖНО 20 10 2 1! ИНВЕРТИРОВАТЬ ОН ДОЛЖЕН!!!! ТОЕСТЬ С ГОЛОВЫ НА НОГИ ПЕРЕВЕРНУТЬ ЧИСЛА!!! А НЕ 20 02! ТАк 20 и должно как бэ остаться!! я ввожу 1 2 3 4 5 6 7 8 9 10 11 12 13 а он мне 13 12 11 10 9 8 7 6 5 4 3 2 1 ВОТ ТАК ДОЛЖНО БЫТЬ!!!! У ТЕБЯ ТАК РАЗВЕ?!?!?
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
28.04.2010, 19:21     Список #15
м-да, не задалось что-то... вот так тупо числа из файла в обратной последовательности выводит
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
#include <stdio.h>
#include <stdlib.h>
 
#define FILE_NAME "numbers.txt"
int main(void){
    int *arr = NULL;
    int size = 0, i, num;
    FILE *f;
 
    if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    while ( fscanf(f, "%d", &num) == 1 ){
        if ( ( arr = (int*)realloc(arr, (size + 1) * sizeof(int)) ) == NULL ){
            perror("realloc");
            exit(1);
        }
        arr[size++] = num;
    }
    if ( ferror(f) ){
        perror("ferror");
        exit(1);
    }
    if ( fclose(f) ){
        perror("fclose");
        exit(1);
    }
 
    while ( --size > -1 )
        printf("%d ", arr[size]);
 
    free(arr);
    printf("\n");
    exit(0);
}
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
28.04.2010, 21:09  [ТС]     Список #16
Цитата Сообщение от easybudda Посмотреть сообщение
м-да, не задалось что-то... вот так тупо числа из файла в обратной последовательности выводит
Ну вот другое совсем дело =] То что нужно))) Спасибо большое!!!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2010, 21:39     Список
Еще ссылки по теме:

C++ Необходимо создать список, элемент которого может быть список
Сформировать список из 10 работников, используя динамическую структуру данных двусвязный список C++
C++ Сформировать список из 10 книг, используя динамическую структуру данных односвязный список

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

Или воспользуйтесь поиском по форуму:
Orlanxxx
 Аватар для Orlanxxx
4 / 1 / 0
Регистрация: 11.10.2009
Сообщений: 153
29.04.2010, 21:39  [ТС]     Список #17
Цитата Сообщение от easybudda Посмотреть сообщение
м-да, не задалось что-то... вот так тупо числа из файла в обратной последовательности выводит
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
#include <stdio.h>
#include <stdlib.h>
 
#define FILE_NAME "numbers.txt"
int main(void){
    int *arr = NULL;
    int size = 0, i, num;
    FILE *f;
 
    if ( ( f = fopen(FILE_NAME, "r") ) == NULL ){
        perror("fopen");
        exit(1);
    }
    while ( fscanf(f, "%d", &num) == 1 ){
        if ( ( arr = (int*)realloc(arr, (size + 1) * sizeof(int)) ) == NULL ){
            perror("realloc");
            exit(1);
        }
        arr[size++] = num;
    }
    if ( ferror(f) ){
        perror("ferror");
        exit(1);
    }
    if ( fclose(f) ){
        perror("fclose");
        exit(1);
    }
 
    while ( --size > -1 )
        printf("%d ", arr[size]);
 
    free(arr);
    printf("\n");
    exit(0);
}
А можно теперь вс тоже самое только через списки замутить!?!?!? А не через массив!
Yandex
Объявления
29.04.2010, 21:39     Список
Ответ Создать тему
Опции темы

Текущее время: 11:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru