Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2013, 16:30   #1
sasha1988
 
Регистрация: 26.05.2012
Сообщений: 6
По умолчанию Что не так?

Код:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
#include <locale.h>
using namespace std;
#define Главное_меню "\nГавное меню\n1. Автор\n2. Задание\n3. Проверил\n4. Добавить элемент\n5. Распечатка подсписков\n6. Поиск элемента за полем количество\n7. Корректировка значения поля \"количество\" выбраного элемента\n8. Выход\nВыберете пункт меню->";
#define task "\nTASK:\n\tVariant N15 \n";
//=====================================================
struct TElem {
char Name[50];
int Chislo, Month, Year, Number;
TElem *next, *next_men_k;
};
typedef TElem* PElem;
//=====================================================
void Correct(PElem &Head, PElem &Head_K, int k)
{
char *name;
PElem Curr=Head, Temp=Head_K;
int count=0;
int num_was;
cout<<"Корректировка количества:\n";
cout<<"\nВведите наименование модели (или её часть) количество которой вы хотите изменить";
cin>>name;
while (Curr) {
if (strstr(Curr->Name,name)) {
count++;
printf("\nName Number\n%s\t%i\n",Curr->Name,Curr->Number);
puts("\nХотите изменить? Нажмите 'lf' если ДА, любую клавишу для - НЕТ\n");
if (!(getch()-'lf')) {
num_was=Curr->Number;
cout<<"\nВведите новое количество->";
cin>>Curr->Number;
if (num_was>=k&&Curr->Number<k) {
Curr->next_men_k=Head_K;
Head_K=Curr;
}
else if (num_was<k&&Curr->Number>=k) {
if (Curr==Head_K) Head_K=Curr->next_men_k;
else Temp->next_men_k=Curr->next_men_k;
Curr->next_men_k=NULL;
}
}
}
if (Curr->next_men_k) Temp=Curr;
Curr=Curr->next;
}
if (!count) cout<<"\nNo such element\n";
cout<<"\n\n\nPress any klavisha to return to Main Menu";
getch();
system("cls");
}
//=====================================================
void Print_List(PElem Head, PElem Head_K)
{
cout<<"Печать списка:\n";
PElem Curr=NULL;
int menshe_k;
cout<<"Выберете подсписок:\n1.Элементы с полем \"Количество\" Меньше К\n2. Все элементы\n";
cin>>menshe_k;
while (menshe_k>2||menshe_k<1) {
cout<<"\nНеправильный выбор.Попробуйте снова->";
cin>>menshe_k;
}
if (menshe_k-1) Curr=Head;
else Curr=Head_K;
cout<<"\nВывод подсписка:\n\n";
if (!Curr) cout<<"\n\nПодсписок пуст!\n";
else {
printf("\nНаименование модели Число Месяц Год Количество\n");
while (Curr) {
printf("\n%s \t %i\t%i\t%i\t%i",Curr->Name,Curr->Chislo,Curr->Month,Curr->Year,Curr->Number);
if (menshe_k-1) Curr=Curr->next;
else Curr=Curr->next_men_k;
}
cout<<"\n\n\nНажмите любую клавишу для возврата в меню";
}
getch();
system("cls");
}
//=====================================================
void Find(PElem Head, PElem Head_K, int k)
{
cout<<"FINDING AN ELEMENT:\n";
int number, count=0;
PElem Curr=NULL;
cout<<"\nEnter the number we should find->";
cin>>number;
printf("Name Chislo Month Year Number");
if (Head_K&&number<k) Curr=Head_K;
else if (Head) Curr=Head;
while (Curr) {
if (Curr->Number==number) {
printf("\n%s\t%i\t%i\t%i\t%i",Curr->Name,Curr->Chislo,Curr->Month,Curr->Year,Curr->Number);
count++;
}
if (number>=k) Curr=Curr->next;
else Curr=Curr->next_men_k;
}
printf("\n\n\n\nThere is %i element(s) with such field\n", count);
getch();
system("cls");
}
//=====================================================
void Add_Elem(PElem &Head, PElem &Head_K, int k)
{
cout<<"Добавление нового элемента:\n";
PElem NewElem=new TElem;
int value;
cout<<"\nВведите поле  \"Количество\"->";
cin>>value;
if (value<k) {
NewElem->next_men_k=Head_K;
Head_K=NewElem;
}
else NewElem->next_men_k=NULL;
NewElem->next=Head;
Head=NewElem;
cout<<"\nВведите поле \"Имя\"->";
cin>>NewElem->Name;
cout<<"\nВведите поле \"Число\"->";
cin>>NewElem->Chislo;
cout<<"\nВведите поле \"Месяц\"->";
cin>>NewElem->Month;
cout<<"\nВведите поле \"Год\"->";
cin>>NewElem->Year;
NewElem->Number=value;
cout<<"\nНовый элемент был успешно добавлен\n";
cout<<"\nНажмите любую клавишу для возврата в главное меню";
getch();	
system("cls");
};
//=====================================================
void main()
{ setlocale(LC_ALL, "rus");
PElem Head=NULL, Head_K=NULL;
int k, choice;
cout<<"\nВведите число К=>";
cin>>k;
while (k<=0) {
system("cls");
cout<<"HebepHoe K. Введите снова";
cin>>k;
}
while (1) {
cout<<Главное_меню;
cin>>choice;
switch (choice) {
case 1:system("cls");
 cout<<"\nAUTHOR:\n------------\n";
 break;
case 2:system("cls"); 
 cout<<task;
 break;
case 3:system("cls");
 cout<<"\nRUKOVODITELI:\n------------\n";
 break;
case 4:system("cls");
 Add_Elem(Head,Head_K,k);
 break;
case 5: system("cls");
 Print_List(Head,Head_K);
 break;
case 6:
system("cls");
 Find(Head,Head_K,k);
 break;
case 7:system("cls");
 Correct(Head,Head_K,k);
 break;
case 8:system("cls");
 exit(0);
default:system("cls");
 cout<<"\nВведен не правильный пункт меню\n";
}
}
}
не работает функция void Correct. ошибка:Run-Time Check Failure #3 - The variable 'name' is being used without being initialized.

Последний раз редактировалось Stilet; 23.01.2013 в 17:43.
sasha1988 вне форума Ответить с цитированием
Старый 23.01.2013, 16:36   #2
Emmelman
Пользователь
 
Регистрация: 27.11.2012
Сообщений: 84
По умолчанию

По-моему ошибка говорит сама за себя. Вы используете переменную, не объявляя её в коде вашей программы. Хотя в теле она вроде объявляется, может попробовать вписать ее сюда - void Correct(PElem &Head, PElem &Head_K, int k, char name)

Последний раз редактировалось Emmelman; 23.01.2013 в 16:40.
Emmelman вне форума Ответить с цитированием
Старый 23.01.2013, 16:39   #3
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Вы используете переменную name без её инициализации.
Попробуйте задать её пустое значение, до того, как используете её. То есть:
Код:
name = '';
И да, вот ещё что
Код:
char *name;
PElem Curr=Head, Temp=Head_K;
int count=0;
int num_was;
cout<<"Корректировка количества:\n";
cout<<"\nВведите наименование модели (или её часть) количество которой вы хотите изменить";
cin>>name;
Вы объявили указатель на name, и через консольный ввод пытаетесь ввести значение для указателя, а не для самой переменной. Чтобы всё работало, её надо разыменовать:
Код:
cin>>*name;
Вадим Мошев вне форума Ответить с цитированием
Старый 23.01.2013, 17:42   #4
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию

Код:
#define Главное_меню "\nГавное меню\n1. Автор\n2. Задание\n3. Проверил\n4. Добавить элемент\n5. Распечатка
 подсписков\n6. Поиск элемента за полем количество\n7. Корректировка значения поля \"количество\" 
выбраного элемента\n8. Выход\nВыберете пункт меню->";
Меня одного смутила эта строка?
Использование кириллический модификаторов недопустимо ( по крайней мере в gcc).
И завершать препроцессорные конструкции точкой с запятой не нужно

Последний раз редактировалось Hemul; 23.01.2013 в 18:23.
Hemul вне форума Ответить с цитированием
Старый 23.01.2013, 18:29   #5
sasha1988
 
Регистрация: 26.05.2012
Сообщений: 6
По умолчанию

Вадим Мошев.
Спасибо,ВАМ,большое,но не помогло появилась новая ошибка.
Необработанное исключение в "0x00f33229" в "12.exe": 0xC0000005: Нарушение прав доступа при записи "0x00f3b83e".
sasha1988 вне форума Ответить с цитированием
Старый 23.01.2013, 19:12   #6
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Ну, покажите тогда тот код, укажите строку (выделите цветом) на которую ругается. да и потом. В первом варианте вашего кода есть такой фрагмент:
Код:
if (!(getch()-'lf'))
Вы чего здесь хотели добиться? Клавиши 'If' нет на клавиатуре. Да и потом, оператор "-", ИМХО, не определён для символьных типов

Последний раз редактировалось Вадим Мошев; 23.01.2013 в 19:15.
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
что не так,м? Карина 1578 Помощь студентам 0 27.12.2011 23:07
Что не так ...? С++ keksik Visual C++ 7 19.09.2011 08:21
Что-то не так в программе...не пойму что Karina_Vamp Помощь студентам 5 24.12.2010 21:06
Что не так? Viento Microsoft Office Excel 3 30.01.2009 14:38