Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++] Задача на структуры, Проблема в коде  
:(
    Опции темы
Fish24
Дата 25.2.2014, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 19.12.2013

Репутация: нет
Всего: нет



Помогите, пожалуйста, найти и исправить ошибку.

Задача: 
•    Описать структуру с именем NOTE, содержащую следующие поля:
•    фамилия, имя;
•    номер телефона;
•    дата рождения (массив из трех чисел).
Написать программу, выполняющую следующие действия:
•    ввод с клавиатуры данных в массив, состоящий из восьми элементов типа NOTE (записи должны быть упорядочены по трем первым цифрам номера телефона);
•    вывод на экран информации о человеке, чья фамилия введена с клавиатуры (если такого нет, вывести соответствующее сообщение).

Сам код:

Код

#include <cstdlib>
#include <iostream>
#include <cstring>
#define N 15
struct NOTE
{
char name[N];
char surname [N];
int phone [N];
int birth[3]; 
};
void input(struct NOTE* a, int n)
{
for (int i=0; i<n; i++)
{
printf("Введите имя #%d: ", i+1); 
scanf("%s", &a[i].name);

printf("Введите фамилию #%d: ", i+1); 
scanf("%s", &a[i].surname);

printf("Введите номер телефона #%d: ", i+1); 
scanf("%d", &a[i].phone);

printf("Введите дату рождения #%d: ", i+1); 
scanf("%d", &a[i].birth);

}
}
void sort(struct NOTE* a, int n) 
{
NOTE buf; 

for (int i=0; i<n; i++) 

for (int j=0; j<n; j++)
{
if(a[i].phone[0] > a[j].phone[0])
{
buf = a[j];
a[j] = a[j+1];
a[j=1] = buf;
}
else if(a[i].phone[0] == a[j].phone[0])
if(a[i].phone[1] > a[j].phone[1])
{
buf = a[j];
a[j] = a[j+1];
a[j=1] = buf;
}
else if(a[i].phone[1] == a[j].phone[1])
if(a[i].phone[2] > a[j].phone[2])

{
buf = a[j];
a[j] = a[j+1];
a[j=1] = buf;
}
}
}


}



using namespace std;

int main()
{
setlocale (0, "Russian");
int n;
char surname1[N];
struct NOTE a[N];
printf("Введите количество человек: ");
scanf("%d", &n);
if ((n<=0)||(n>N))
{
printf("Ошибка! Не удается выделить память.\n");
return 0;
}
input(a, n);
sort (a, n);
for (int i=0; i<n; i++)
{
printf("Имя: %s", a[i].name); 
printf("Фамилия: %s", a[i].surname);
printf("Номер телефона: %s", a[i].phone);
printf("Дата рождения: %s", a[i].birth);

}
printf ("Введите фамилию: \n");
cin » surname1;
for (int i=0; i<n; i++)
{
if (surname1 == a[i].surname)


printf ("Имя: ", a[i].name);
printf ("Номер телефона: ", a[i].phone);
printf ("дата рождения: ", a[i].birth);
}
else
printf ("Человек с такой фамилией не найден.");

}

system("pause");
return 0;
}


Получается вот так:


Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  ND7Q3lPJZuw.jpg 24,21 Kb
PM MAIL   Вверх
Фантом
Дата 25.2.2014, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 7
Всего: 49



Во-первых, что имелось в виду, когда поле под номер телефона объявлялось как массив? С последующим чтением в него числа.  smile С датой рождения примерно та же история - объявлен массив, а вводится число.

Во-вторых, Вы, случайно, не мазохист? Использование одновременно printf/scanf и стандартного потокового ввода (но без вывода) C++ в одной программе иначе охарактеризовать трудно. Особенно пикантно на этом фоне выглядит попытка выводить числовые данные как строки.

Ну и, вообще говоря, такое написание кода - это одна большая ошибка. Форматирования кода нет, константы в С++ объявляются макросами...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0911 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.