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

Описать структуру. Ошибка в коде - C++

Восстановить пароль Регистрация
 
Vova_Sim
2 / 2 / 0
Регистрация: 07.11.2012
Сообщений: 50
23.06.2013, 19:12     Описать структуру. Ошибка в коде #1
9. Описать структуру с именем ZNAK, содержащую следующие поля: фамилия, имя, знак зодиака, дата рождения (массив из трёх чисел). Написать программу, выполняющую следующие действия:
Ввод с клавиатуры данных в массив, состоящий из восьми структур типа ZNAK, вывод на экран информации о человеке, чья фамилия введена с клавиатуры. Упорядочить структуры по алфавиту (фамилии).
прошу найти ошибку, в выводе и заполнении структуры...ну я так думаю...результат прикрепил
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
71
72
73
74
75
76
77
78
79
#include "stdafx.h"
#include "conio.h"
#include "locale.h"
#include "stdio.h"
#include "string.h"
//#include ".h"
//using namespace System;
 
int _tmain(int a)
{    int i, j, n, b,d, flag; char isk[10]; char dan[10];
    setlocale(LC_ALL,"Russian");    
    n=5;
  struct ZNAK
   {//определение структурного типа ZNAK
     char f[10];//Фамилия
     char name[7];//Имя
     char znak[9];//Знак
     int x[3];//День, Месяц, Год
     
   } array[6];
  flag=0;
  for (i=0; i<n; i++)
{
  printf("Введите фамилию: ");
  scanf_s("%s", array[i].f);
  printf("Введите имя: ");
  scanf_s("%s", array[i].name);
  printf("Введите знак зодиака: ");
  scanf_s("%s", array[i].znak);
  printf("Введите дату рождения в цифровом формате: ");
  
  for (j=0; j<3;j++)
  scanf_s("%d",&(array[i].x[j]));
  printf("\n");
}
   for (d=0; d<n-1; d++) 
        for (i=0; i<n-1-d; i++){          
            if (array[i].x[2] > array[i+1].x[2])
             {array[5]=array[i];
             array[i]=array[i+1];
             array[i+1]=array[5];}
          if (array[i].x[2] == array[i+1].x[2]){
           if (array[i].x[1] > array[i+1].x[1]){
              array[5]=array[i];
              array[i]=array[i+1];
              array[i+1]=array[5];}
           if (array[i].x[1] == array[i+1].x[1])
              if (array[i].x[0] > array[i+1].x[0]){
                  array[5]=array[i];
                  array[i]=array[i+1];
                  array[i+1]=array[5];}
 
          } }
   for (i=0; i<n; i++){
    printf("\n\nФамилия: %s",array[i].f);
    printf("\nИмя: %s",array[i].name);
    printf("\nЗнак зодиака: %s", array[i].znak);
     for (j=0; j<3;j++)
    printf("\nДата рождения: %d", array[i].x[j]);
    printf("\n");
   }
  printf("Введите фамилию искомого человека: ");
  scanf_s("%s", isk);
  printf("\n\nИмеющаяся информация:");
 
  for (i=0; i<n; i++)
{if (strcmp(array[i].f,isk)==0) {
    printf("\nФамилия: %s",array[i].f);
    printf("\nИмя: %s",array[i].name);
    printf("\nЗнак зодиака: %s", array[i].znak);
    flag=1;
     for (j=0; j<3;j++)
    printf("\nДата рождения: %d", array[i].x[j]);
  }
 }
  if (flag==0) printf("Искомый человек не найден");
     _getch();
     return 0;
}
http://cs538610.vk.me/u105108036/doc...013_175620.png
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 19:12     Описать структуру. Ошибка в коде
Посмотрите здесь:

C++ Описать структуру
C++ описать структуру
описать структуру C++
C++ Описать структуру
Ошибка в программе (Описать структуру с именем NOTE) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
23.06.2013, 19:17     Описать структуру. Ошибка в коде #2
@Vova_Sim, после того, как вы ввели строку в буфере остается символ перевода строки, иначе говоря "enter". Его нужно зачистить. После любого ввода строки поставьте что-то типа:
C++
1
scanf("%s", crap);
предварительно объявив
C++
1
char crap[10]; // 10 символов на всякий случай
Иначе говоря, вводы строк будут выглядеть не так:
C++
1
2
scanf("%s", a);
scanf("%s", b);
,- а так:
C++
1
2
3
4
scanf("%s", a);
scanf("%s", crap);
scanf("%s", b);
scanf("%s", crap);
А вообще это _getch() вроде ловит тоже (смотрю, у вас conio.h есть)
Vova_Sim
2 / 2 / 0
Регистрация: 07.11.2012
Сообщений: 50
23.06.2013, 19:31  [ТС]     Описать структуру. Ошибка в коде #3
сейчас попробую. спасибо)
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.06.2013, 20:21     Описать структуру. Ошибка в коде #4
Фамилия, имя, знак состоят из одного слова:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
for (i=0; i<n; i++)
{
  printf("Введите фамилию: ");
  scanf("%s", array[i].f);
  printf("Введите имя: ");
  scanf("%s", array[i].name);
  printf("Введите знак зодиака: ");
  scanf("%s", array[i].znak);
  printf("Введите дату рождения в цифровом формате: ");
  
  for (j=0; j<3;j++)
  scanf("%d",&(array[i].x[j]));
...
Yandex
Объявления
23.06.2013, 20:21     Описать структуру. Ошибка в коде
Ответ Создать тему

Метки
znak, znak c++, описать структуру, описать структуру c++, описать структуру znak c++, описать структуру znak, описать структуру с именем znak, описать структуру с именем znak c++, структуры данных, структуры данных c++
Опции темы

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