Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
19 Апрель 2024, 17:13:04
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Помогите найти ошибку visual C++

Страниц  :   Вниз
  Печать  
Автор Тема: Помогите найти ошибку visual C++  (Прочитано 1440 раз)
0 Пользователей и 1 Гость смотрят эту тему.
❀ Liliya ๏̯͡๏
Настоящий гродненец
****

Репутация: +48/-1
Offline Offline

Пол: Женский
Сообщений: 425


Просмотр профиля
« : 24 Апрель 2009, 19:42:55 »

1. Создать класс с  именем PRICE, содержащий следующие поля:
■   название товара;
■   название магазина, в котором продается товар;
■   стоимость товара в руб.
2.   Написать программу, реализующую следующие методы:


■ ввод с клавиатуры данных в массив, состоящий из восьми объектов класса  PRICE;
■ вывод на экран информации о товарах, продающихся в магазине, название которого введено с клавиатуры,  если такого магазина нет, выдать на дисплей соответствующее сообщение.

программа зависает ! исправила но с сортировкой проблема
 ЛИСТИНГ

Код:
#include "stdafx.h"
#include <iostream.h>
#include <iomanip.h>
#include <string.h>
#include <conio.h>

#include <fstream.h>
#include <stdlib.h>
#include <io.h>


#define TOV 20      // длина поля наименования товара
#define MAG 15      // длина поля названия магазина
#define R 8       // размерность массива объектов


// описание  PRICE
class PRICE
{
 public:
  char tovar [TOV];//наименование товара
  char mag [MAG]; // магазин
  int cena;       //цена



};


//----------------------------------------------


void main()
{
 PRICE m[R]; // объявление массива объектов типа PRICE
              // размерностью R
 PRICE vr; //временные данные
 PRICE sort[R]; //отсортированный массив
 int nom, i,k ;
   char c;
nom=0;

  while (1)
{
 // clrscr();

  cout << "  1. vvod dannuh \n";
  cout << "  2. prosmotr  \n";
  cout << "  3. poisk \n";
  cout << "  4. vuhod                     \n";
  cout << "vubor -> ";

  cin>>c;

switch©
{
  case '1':
  {
 
  cout << "vvod v masiv:\n";
  for (i=0; i<4; i++)
  {
  cout << "naimenovanie:\n";
  cin>>m[i].tovar;
  cout << "magazin:\n";
  cin>>m[i].mag;
  cout << "stoimost:\n";
  cin >>m[i].cena;}

  break;};
  case '2':
  {
for (i=0; i<4; i++)
{
sort[i].cena =m[i].cena;
strcpy(sort[i].mag,m[i].mag);
strcpy(sort[i].tovar,m[i].tovar);

};


  for (i=0; i<4; i++)
  for (k=4; k<0; k--)
  if (stricmp(sort[k-1].mag,sort[k].mag)>1){
   strcpy(vr.mag,sort[k].mag);
      vr.cena=sort[k].cena;
    strcpy(vr.tovar,sort[k].tovar);
   strcpy(sort[k].mag,sort[k-1].mag);
        sort[k].cena=sort[k-1].cena;
strcpy(sort[k].tovar,sort[k-1].tovar);
   strcpy(sort[k-1].mag,vr.mag);
      sort[k-1].cena=vr.cena;
   strcpy(sort[k-1].tovar,vr.tovar);
 
  }

   
 for (i=0; i<4; i++)
cout<< sort[i].mag<< endl;




  cout << "-----------------------------------------------------------------\n";
  cout << "| naimenovanie tovara     | nazvanie magazina  | stoimost  |\n";
  cout << "|-------------------------|--------------------|-----------|\n";
   for (i=0; i<8; i++)
   {
    cout.setf(ios::left); // установка флага равнения по левому краю
  cout << "|" << setw(25) <<m[i].tovar << "|" << setw(20) << m[i].mag
     << "|";
  cout.setf(ios::right); // установка флага равнения по правому краю
  cout << setw(11) << m[i].cena << "|" << endl;
   
   }
  break;}
  case '3':
     //поиск
    break;
  case '4':
  //выход
    break;
 return;
 default:
  cout << "Вводите только цифры от 1 до 4" << endl;
  cout << "Продолжение - клавиша Enter\n";
  cin.seekg(0,ios::end);
              cin.get();
        };

    };
}
//-------------------------------------------------------------------                                           





« Последнее редактирование: 25 Апрель 2009, 01:54:42 от liliya » Записан
_SworD_
Почетный гродненец
*****

Репутация: +79/-2
Offline Offline

Пол: Мужской
Сообщений: 1603


Все делай с умом!

Просмотр профиля WWW
« Ответ #1 : 24 Апрель 2009, 20:10:26 »

залей лечше исходник (прикрепи). Ато так не удобно смотреть.

Кста когда виснет,  сразу?
Записан
NOSTRA
Настоящий гродненец
****

Репутация: +102/-0
Offline Offline

Пол: Мужской
Сообщений: 475


Программист - велосипедист

S Просмотр профиля WWW
« Ответ #2 : 24 Апрель 2009, 23:34:35 »

Этот код даже не компилится, как он может зависать ещё.
Н-р в некоторых местах вместо
Код:
x[i]
стоит просто x. Это, блин, то же самое, если б ты строки перемножал. Автор, ты либо че-то недописал, либо... сам-то запускать пробовал?

А понял, это не твоя вина. Не стоит программный код сувать просто в редактор. Вставляй его между тегами
Код:
[code]..........[ /code]
[/code]
Записан

❀ Liliya ๏̯͡๏
Настоящий гродненец
****

Репутация: +48/-1
Offline Offline

Пол: Женский
Сообщений: 425


Просмотр профиля
« Ответ #3 : 25 Апрель 2009, 01:35:45 »

сравнивание строк как осуществляетсяНепонимающий
Записан
spammer
Почетный гродненец
*****

Репутация: +78/-19
Offline Offline

Пол: Мужской
Сообщений: 1455


Пыхнуть не хотите?

Просмотр профиля
« Ответ #4 : 25 Апрель 2009, 10:13:03 »

используй


#include <string>
#include <vector>
using namespace std;


все строки перепиши через string вместо char*
все массивы через vector<T> вместо T*

значительное уменьшение геморроя гарантировано
Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2024, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,095 секунд. Запросов: 19.