Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 3
Регистрация: 10.07.2016
Сообщений: 28
Записей в блоге: 1
1

Неправильно выводит на экран элементы структуры

10.07.2016, 23:09. Показов 1307. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Суть вопроса (код полностью прикрепила файлом):
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
typedef struct Data{
    char name[30];
    char country[40];
    char city[20];
    char year[4];
    char lines[3];
    char pass_traffic[3];
    struct Data *next;
    struct Data *prev;
}Data;
 
Data *first = NULL;
Data *last = NULL;
 
//так вводятся данные с клавиатуры в структуру
 
metro = (Data*)malloc(sizeof(Data))
inputs("\n\tEnter a country: ", metro->country, 30);
        if(!metro->country[0])
        break;      
 
void addelement(Data *x, Data **first, Data **last){ 
    
    if(*first == NULL) { 
                x->next = NULL;
                x->prev = NULL;
                *last = x;
                *first = x;  
            return;
    }
    else{
            (*first)->next = x;
                (*first)->prev = x;
                x->next = *first;
        x->prev = *last;
        return;
    }
    
  }
 
//проблема с выводом списка на печать. В таком виде печатает то, что я ввожу, но МОМЕНТАЛЬНО пропадает с экрана. То бишь, 1 секунда, где еле видны данные, затем сразу высвечивается меню.
 
void printlist(){
    
    Data *metro;
    metro = first;  
 
    do{
        display(metro);
        metro = metro->next;
            
    } while(metro != first); 
}
 
void display(Data *metro){
 
    printf("\n\t%s", metro->name);
    printf("\n\t%s", metro->country);
    printf("\n\t%s", metro->city);
    printf("\n\t%s", metro->year);
    printf("\n\t%s", metro->lines);
    printf("\n\t%s\n", metro->pass_traffic);
}
Вообще очень хотелось бы от вас узнать еще какие-нибудь способы вывода на экран данных из двусвязного кольцевого. У меня если и выводятся данные, не пропадая ежесекундно, то бесконечным списком.

Также есть проблема с выводом меню два раза. Из-за чего такое может быть?
Выбираю критерий, ввожу (допустим) название метро-на. Итог: на экран выводится то, что нашлось, и меню два раза.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Data *metro;
  printf("\nКритерии поиска: \n\n");
  puts("\n\t1 -> Поиск по названию метрополитена;\n");
  puts("\n\t2 -> Поиск по названию страны;\n");
  puts("\n\t3 -> Поиск по названию города;\n");
  puts("\n\t4 -> Поиск по дате постройки;\n");
  puts("\n\t5 -> Поиск по количеству линий;\n");
  puts("\n\t6 -> Поиск по числу пассажиропотока.);\n");
  printf("\n\tВаш выбор: \n");
  scanf("%d", &l);
  switch(l){
    case 1:
        printf("\n\tВведите название метрополитена: \n");
        scanf("%s",name);
        metro = findname(name);
        if(!metro){
                printf("\n\t\t\tНе найдено.\n");
        }
        else
            display(metro);
        break;
Миниатюры
Неправильно выводит на экран элементы структуры   Неправильно выводит на экран элементы структуры  
Вложения
Тип файла: zip Kursovaya_Nadezhda.zip (1.9 Кб, 3 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2016, 23:09
Ответы с готовыми решениями:

Неправильно выводит на экран
программа должна заполнять массив на 36 элементов числами от 1 до 36. потом выводить на экран...

При вводи данных неправильно выводит на экран
вот код программы #include <iostream> #include <conio.h> using namespace std; int main() {...

Класс: Почему неправильно считает и выводит на экран страшное число?
Добрый вечер! Подскажите, пожалуйста, почему неправильно считает в строке 57 и выводит на экран...

Почему не выводит все элементы на экран?
Первый раз работаю с генерацией изображение на PHP. столкнулся со странной проблемой. ...

3
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
11.07.2016, 22:51 2
Цитата Сообщение от ClavicusVile Посмотреть сообщение
while(metro != first);
Может тут надо
C
1
while(metro != last);
?
1
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
12.07.2016, 11:30 3
Лучший ответ Сообщение было отмечено ClavicusVile как решение

Решение

Цитата Сообщение от ClavicusVile Посмотреть сообщение
Также есть проблема с выводом меню два раза. Из-за чего такое может быть?
Это вот из-за чего. У вас работа с меню построена на бесконечном цикле:
C
1
2
3
4
5
6
7
8
9
10
11
12
for(;;){
  system("cls");
  fflush(stdin);
  switch(menu_select()){
    /* .... more code here ... */
    case 3:
      printlist();
      // fprintf(ff, "Print all");
      break;
    /* .... more code here ... */
  }
}
Так вот после того, как вы закончили печатать на экран, вы выходите из оператора множественного выбора и сразу переходите к следующей итерации в цикле управления меню, а самая первая инструкция у вас в его теле -- очистка экрана. Отсюда и фейл. Почините, а потом дальше будем разбираться.
1
1 / 1 / 3
Регистрация: 10.07.2016
Сообщений: 28
Записей в блоге: 1
12.07.2016, 16:50  [ТС] 4
Господи Иисусе, я Вас люблю! Спасибо
Только тогда вопрос: как мне правильно очистить экран? ...Пойду подумаю..

Все, выход нашла! просто в самой функции дописала system("cls") и усе.
0
12.07.2016, 16:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2016, 16:50
Помогаю со студенческими работами здесь

почему не выводит на экран элементы массива?
#include <iostream> using namespace std; void intFunc(int p); int _tmain(int argc, _TCHAR*...

Найти в файле отрицательные элементы, и когда они есть, то выводит их на экран
Написать программу, которая в файле, ищет отрицательные элементы, и когда они есть, то выводит их...

Составить программу, которая находит положительные элементы массива и выводит их на экран
Нужно написать программу в Borland Delphi 7. Составить программу,которая находит положительные...

Разработать программу, которая выводит на экран элементы из всех листьев дерева
Разработать программу, которая выводит на экран элементы из всех листьев дерева Ругается на 33...


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

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