Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
4 / 1 / 2
Регистрация: 11.10.2009
Сообщений: 153
1

Список

20.04.2010, 18:27. Просмотров 802. Ответов 16
Метки нет (Все метки)

Написать программу на Си, которая инвертирует список из целых чисел. Числа читаються из текстового файла и результат выводиться на экран!

ПОМОГИТЕ ПЛИИИЗ! ЗА РАНЕЕ СПАСИБО!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2010, 18:27
Ответы с готовыми решениями:

Создать список L3 из элементов, входящих и в список L1 и в список L2
создать список л3 из элементов входящих и в список л1 и в список л2

Создать список L3 из элементов, которые входят в список L1 и не входят в список L2
Задание : Создать список L3 из элементов, которые входят в список L1 и не входят в список L2,...

3 класса: список, стек(как список), очередь(как список)
препод дал задание: написать 3 класса (список, стек, очередь), методы: вывод, добавление,...

Создать список L3 из элементов, которые входят в список L1 и не входят в список L2
Нужно создать список L3 из элементов, которые входят в список L1 и не входят в список L2, вернуть...

16
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6732 / 1616
Регистрация: 25.07.2009
Сообщений: 12,470
21.04.2010, 20:15 2
Цитата Сообщение от Orlanxxx Посмотреть сообщение
инвертирует список из целых чисел
В каком смысле? числа из файла от последнего к первому выводит, или цифры в числах задом на перёд меняет?
1
4 / 1 / 2
Регистрация: 11.10.2009
Сообщений: 153
21.04.2010, 20:17  [ТС] 3
Цитата Сообщение от easybudda Посмотреть сообщение
В каком смысле? числа из файла от последнего к первому выводит, или цифры в числах задом на перёд меняет?
К примеру в файле числа 12345, а нам нужно в таком случае вывести 54321!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6732 / 1616
Регистрация: 25.07.2009
Сообщений: 12,470
21.04.2010, 20:26 4
1. тогда не числа, а цифры из файла.
2. нужно проверять, что там кроме цифр ничего нет?
3. если файл содержит только идущие подряд цифры и сам не длиннее 2 гигов, то проще его в одну большую строку скопировать и задом на перёд её вывести...
1
4 / 1 / 2
Регистрация: 11.10.2009
Сообщений: 153
21.04.2010, 20:29  [ТС] 5
Цитата Сообщение от easybudda Посмотреть сообщение
1. тогда не числа, а цифры из файла.
2. нужно проверять, что там кроме цифр ничего нет?
3. если файл содержит только идущие подряд цифры и сам не длиннее 2 гигов, то проще его в одну большую строку скопировать и задом на перёд её вывести...
Надо проверять что бы числа были обязательно целыми!!!! Ну попробуй так плиииз и кинь текст проги!!! Я чет не догоняюю что ты хочешь... Точнее как это сделать! Попробуй пожалуйста!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6732 / 1616
Регистрация: 25.07.2009
Сообщений: 12,470
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 Посмотреть сообщение
Я чет не догоняюю что ты хочешь...
Виллу хочу на Канарах. Посодействуешь? ;)

1
4 / 1 / 2
Регистрация: 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 рад бы да у самого одна осталась)))
0
4 / 1 / 2
Регистрация: 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!!! Помоги плыЗ)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6732 / 1616
Регистрация: 25.07.2009
Сообщений: 12,470
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);
}
1
4 / 1 / 2
Регистрация: 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 минуты

Но тока она что-то не инвертирует((( Просто выдает числа!!!
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6732 / 1616
Регистрация: 25.07.2009
Сообщений: 12,470
28.04.2010, 18:03 11
Цитата Сообщение от Orlanxxx Посмотреть сообщение
Но тока она что-то не инвертирует
пустую строку в конце файла добавь
Список

ну или отслеживай ситуацию, когда строка кончилась, а последнее число в ней ещё не обработано
1
4 / 1 / 2
Регистрация: 11.10.2009
Сообщений: 153
28.04.2010, 18:12  [ТС] 12
Цитата Сообщение от easybudda Посмотреть сообщение
пустую строку в конце файла добавь
Вложение 28279
ну или отслеживай ситуацию, когда строка кончилась, а последнее число в ней ещё не обработано
Спасиб

Добавлено через 7 минут
Цитата Сообщение от easybudda Посмотреть сообщение
пустую строку в конце файла добавь
Вложение 28279
ну или отслеживай ситуацию, когда строка кончилась, а последнее число в ней ещё не обработано
ЧТо-то я ничего не понял.... Что сделать то надо!? Я добавил строчку в коец а толку нет! Как отслеживать?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6732 / 1616
Регистрация: 25.07.2009
Сообщений: 12,470
28.04.2010, 18:24 13
Orlanxxx, что-то не так делаешь... Входной файл покажи.
0
4 / 1 / 2
Регистрация: 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 ВОТ ТАК ДОЛЖНО БЫТЬ!!!! У ТЕБЯ ТАК РАЗВЕ?!?!?
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10855 / 6732 / 1616
Регистрация: 25.07.2009
Сообщений: 12,470
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);
}
1
4 / 1 / 2
Регистрация: 11.10.2009
Сообщений: 153
28.04.2010, 21:09  [ТС] 16
Цитата Сообщение от easybudda Посмотреть сообщение
м-да, не задалось что-то... вот так тупо числа из файла в обратной последовательности выводит
Ну вот другое совсем дело =] То что нужно))) Спасибо большое!!!
0
4 / 1 / 2
Регистрация: 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);
}
А можно теперь вс тоже самое только через списки замутить!?!?!? А не через массив!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2010, 21:39

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

list. Cоздать список из результатов(с массивами), а потом просмотреть весь список
Подскажите пожалуйста как мне создать список из моих результатов(с массивами) а потом просмотреть...

Вводится число N. Создать список его делителей и вывести список на экран
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; ...

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

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

Создать список из элементов первого списка, которые не входят в другой список
создать список L ,который включает в себя по одному разу елементы,которые входят в список L1 и не...

Список: связный список, в котором информация о книгах сортируется по убыванию стоимости.
Друзья помогите с реализацией списка. Нужно запрограммировать связный список, в котором информация...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.