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

Модель стека - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Замена елементов в строке в матрице http://www.cyberforum.ru/cpp-beginners/thread724380.html
Добрый день. Задача такая. Есть матрица: 1 1 1 1 0 1 1 1 0 1 1 1 0 0 0 1 Нужно заменить елементы стоящие справа от 1 в строке на 0 и начинать обход с низу вверх с первого столбика.
C++ Как ведет себя cin, если пользователь вводит некорректные данные? Читаю C++ Primer Plus by Stephen Prata. В седьмой главе у него есть следующий пример. // lotto.cpp -- probability of winning #include <iostream> // Note: some implementations require double... http://www.cyberforum.ru/cpp-beginners/thread724376.html
крестики нолики, нужен мозг C++
1) выберите пункт меню - "Game", нажмите Enter, а потом нажмите стрелочки вверх, вниз и вылазит меню :( почему и как решить эту проблему? 2) помогите с ходами компьютера и проверкой на победу ...
C++ Преобразование значения переменной (long) через функцию в значения структуры
Я недавно начал заниматься С++ и программированием в целом. Вот у меня такая проблема. В этой программе не работает часть, когда вводишь кол-во секунд, а с помощью функции time...
C++ Смысл картинки и рекурсия изнутри http://www.cyberforum.ru/cpp-beginners/thread724328.html
http://s018.***********/i522/1212/0b/704b04ecd185t.jpg как происходит рекурсия изнутри, что это вообще картинка показывает ?
C++ И снова массивы (найти максимальный элемент, определить среднее арифметическое) Задано 2 целочисленных массива X(n) и Z(k). В каждом массиве найти максимальный элемент массива,и если это простое число-удалить все элементы,равные максимальному значению.Определить среднее... подробнее

Показать сообщение отдельно
svkpro
8 / 8 / 0
Регистрация: 07.12.2012
Сообщений: 143
09.12.2012, 20:18
лови
Код
#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <windows.h>
#define  size_str 200
using namespace std;

//объявляем структуру
typedef struct kniga { 
char shifr[4]; 
char avtor[15]; 
char nazv[15];
char izdat[15];
char god[6];
struct kniga* next; 
 } Kniga;

Kniga* top = NULL;
int t;

void push(char* shifr, char* avtor, char* nazv, char* izdat, char* god)//добавление 
 {
	 if(t>=20)cout<<"стек полон!"<<endl;
	 Kniga* ptr = (Kniga *)malloc(sizeof(Kniga)); 
	 strcpy(ptr->shifr,shifr);
	 strcpy(ptr->avtor,avtor); 
	 strcpy(ptr->nazv,nazv);
	 strcpy(ptr->izdat,izdat);
	 strcpy(ptr->god,god);
	 ptr->next = top;
	 t++;
	 top = ptr;
	 
 }

void pop()//взятие и удаление с записью в файл
{ 
 if(top != NULL) 
	 { 
	 Kniga* ptr = top->next; 
	 printf("%s ",top->shifr); 
	 printf("%s ",top->avtor); 
	 printf("%s ",top->nazv); 
	 printf("%s ",top->izdat); 
	 printf("%s - deleted\n\n",top->god); 
 char strz[100];
	 strcpy(strz,top->shifr);
	 strcat(strz,";");
	 strcat(strz,top->avtor);
	 strcat(strz,";");
	 strcat(strz,top->nazv);
	 strcat(strz,";");
	 strcat(strz,top->izdat);
	 strcat(strz,";");
	 strcat(strz,top->god);
	 strcat(strz,";");
FILE* fz;
	 fz=fopen("D:\\udal.txt","a+");
	 fputs(strz, fz);
	 fputc('\n',fz);
	 fclose(fz);
	 free(top);
	 top = ptr;
	 t--;
	 }
 else 
	 cout<<"стек пуст"<<endl;
}

void show_stack() 
{
 
 Kniga* ptr = top;
 if(ptr==NULL){
	 cout<<"стек пуст!"<<endl;
 }
 else
 while(ptr != NULL) 
 { 
	 printf("%s ",ptr->shifr);
	 printf("%s ",ptr->avtor);
	 printf("%s ",ptr->nazv);
	 printf("%s ",ptr->izdat);
	 printf("%s \n\n",ptr->god);		
 ptr = ptr->next; 
 } 
}


void p1(){ //заполнение
	char ch_key;
    bool bMENU = true;
    while(bMENU)
    {
		system("cls");
        cout<<"1)  с консоли "<<endl;
        cout<<"2)  из файла "<<endl;
        cout<<"ESC Выход"<<endl<<endl;
        cout<<"пожалуйста выберите пункт меню"<<endl;
		char str1[4]; 
		char str2[15];
		char str3[15];
		char str4[15];
		char str5[6];
		switch((ch_key = _getch()))
        {
//заполнение стека с консоли
        case '1':system("cls");
					while(true){
					 	cin>>str1;
						cin>>str2;
						cin>>str3;
						cin>>str4;
						cin>>str5;
						cout<<endl;
						push(str1,str2,str3,str4,str5);
						system("cls");
						show_stack();
						cout<<"элемент успешно добавлен в стек!"<<endl<<endl;
						cout<<endl;
						cout<<"Enter - продолжить"<<endl;
						cout<<"Esc - выйти"<<endl;
						int n; 
						n = getch();
					if(n == 27)break; 
						system("cls");
						}
						cout<<endl;
						cout<<"для продолжения нажмите Enter";
						cin.get();break;
//заполнение из файла
		case '2':system("cls");
				FILE*cfPtr;
				fopen("zapoln.txt","r");
				if((cfPtr=fopen("zapoln.txt","r"))==NULL){
					cout<<"файл не найден!";
				}
				else
					while(true){
						char strz[100];
						fgets(strz,size_str,cfPtr);
						char *p1,*p2,*p3,*p4,*p5;
						if(feof(cfPtr))break;
						p1=strtok(strz,";");
						p2=strtok(NULL, ";");
						p3=strtok(NULL, ";");
						p4=strtok(NULL, ";");
						p5=strtok(NULL, ";");
						push(p1,p2,p3,p4,p5);
					}
					system("cls");
					show_stack();
					cout<<"элементы успешно добавлены в стек!"<<endl<<endl;
					fclose(cfPtr);
						cout<<endl;
						cout<<"для продолжения нажмите Enter";
						cin.get();break;				
					case  27:bMENU = false;
						cout<<endl;
						cout<<"программа возвращается в главное меню!"<<endl<<endl;break;
					default:cout<<endl;
						cout<<"вы ввели неверный символ!"<<endl;
						cout<<endl;
						cout<<"для продолжения нажмите Enter";
						cin.get();break;
					}
			}
	system("pause");
}
void p2(){//удаление
	char ch_key;
    bool bMENU = true;
    while(bMENU)
    {
		system("cls");
        cout<<"1)  безвозвратно"<<endl;
        cout<<"2)  с сохранением в файл"<<endl;
        cout<<"ESC Выход"<<endl<<endl;
        cout<<"пожалуйста выберите пункт меню"<<endl;
		
        switch((ch_key = _getch()))
        {
        case '1':system("cls");
				 if(top != NULL)//удаление безвозвратно 
					 while(true)
					 { 
					 Kniga* ptr = top->next; 
					 printf("%s ",top->shifr); 
					 printf("%s ",top->avtor); 
					 printf("%s ",top->nazv); 
					 printf("%s ",top->izdat); 
					 printf("%s - deleted\n\n",top->god);
					 free(top);
					 top = ptr;
					 t--;
					 if(t<=0)break;
					 cout<<"1) удалить следующий элемент"<<endl;
					 cout<<"ESC Выход"<<endl<<endl;
					 char ch_key_t;
					 switch((ch_key_t =_getch()))
					 {
					 case '1':break;
					 case 27 :goto gt;
					 }
					}
				 else
					 cout<<"стек пуст!"<<endl;
					 cout<<endl;
					 gt:
					 cout<<"для продолжения нажмите Enter";
					 cin.get();break;
		case '2':system("cls");//удаление с записью в файл
				 if(top != NULL)
					 while(true)
					 { 
					 cout<<"1) удалить следующий элемент"<<endl;
					 cout<<"ESC Выход"<<endl<<endl;
					 char ch_key_t;
					 switch((ch_key_t =_getch()))
					 {
					 case '1':break;
					 case 27 :goto gt2;
					 }
						pop();
						if(t<=0)break;
					 }
				 else
					 cout<<"стек пуст!"<<endl;
					 cout<<endl;
					 gt2:
					 cout<<"для продолжения нажмите Enter";
					 cin.get();break;				
        case  27:bMENU = false;
				 cout<<endl;
				 cout<<"программа возвращается в главное меню!"<<endl<<endl;break;
        default:cout<<endl;
				 cout<<"вы ввели неверный символ!"<<endl;
				 cout<<endl;
				 cout<<"для продолжения нажмите Enter";
				 cin.get();break;
        }
    }
    system("pause");
}
void p3(){//очистка
	char ch_key;
    bool bMENU = true;
    while(bMENU)
    {
		system("cls");
        cout<<"1)  безвозвратно"<<endl;
        cout<<"2)  с сохранением в файл"<<endl;
        cout<<"ESC Выход"<<endl<<endl;
        cout<<"пожалуйста выберите пункт меню"<<endl;
        switch((ch_key = _getch()))
        {
        case '1':system("cls");//очистка безвозвратно 
				 while(top != NULL)
					 { 
					 Kniga* ptr = top->next; 
					 printf("%s ",top->shifr); 
					 printf("%s ",top->avtor); 
					 printf("%s ",top->nazv); 
					 printf("%s ",top->izdat); 
					 printf("%s - deleted\n",top->god);
					 free(top);
					 top = ptr;
					 t--;
					}
					 cout<<"стек пуст!"<<endl;
					 cout<<endl;
					 cout<<"для продолжения нажмите Enter";
					 cin.get();break;
		case '2':system("cls");//очистка с записью в файл
				 if(top != NULL)
					 while(true)
					 { 
						pop();
						if(t<=0)break;
					 }
				 else
				 cout<<endl;
				 cout<<"для продолжения нажмите Enter";
				 cin.get();break;		
				 cout<<endl;
				 cout<<"для продолжения нажмите Enter";
				 cin.get();break;				
        case  27:bMENU = false;
				 cout<<endl;
				 cout<<"программа возвращается в главное меню!"<<endl<<endl;break;
        default:cout<<endl;
				 cout<<"вы ввели неверный символ!"<<endl;
				 cout<<endl;
				 cout<<"для продолжения нажмите Enter";
				 cin.get();break;
        }
    }
    system("pause");
}
void p4(){//вывод элементов
	char ch_key;
    bool bMENU = true;
    while(bMENU)
    {
		system("cls");
        cout<<"1)  на экран"<<endl;
        cout<<"2)  в файл"<<endl;
        cout<<"ESC Выход"<<endl<<endl;
        cout<<"пожалуйста выберите пункт меню"<<endl;
        switch((ch_key = _getch()))
        {
        case '1':system("cls");//показ на экран
				 show_stack();
				 cout<<endl;
				 cout<<"для продолжения нажмите Enter";
				 cin.get();break;
		case '2':system("cls");{//показ с записью в файл
				 if(top != NULL)
					while(true)
					 { 
					 Kniga* ptr = top->next; 
					 printf("%s ",top->shifr); 
					 printf("%s ",top->avtor); 
					 printf("%s ",top->nazv); 
					 printf("%s ",top->izdat); 
					 printf("%s \n\n",top->god); 
				 char strz[100];
					 strcpy(strz,top->shifr);
					 strcat(strz,";");
					 strcat(strz,top->avtor);
					 strcat(strz,";");
					 strcat(strz,top->nazv);
					 strcat(strz,";");
					 strcat(strz,top->izdat);
					 strcat(strz,";");
					 strcat(strz,top->god);
					 strcat(strz,";");
				FILE* fz;
					 fz=fopen("D:\\pokaz.txt","a+");
					 fputs(strz, fz);
					 fputc('\n',fz);
					 fclose(fz);
					 top = ptr;
					 if(top==NULL)break;	 
					 }
				 else{ 
					 cout<<"стек пуст"<<endl;
				 }
				}
								 cout<<endl;
				 cout<<"для продолжения нажмите Enter";
				 cin.get();break;				
        case  27:bMENU = false;
				 cout<<endl;
				 cout<<"программа возвращается в главное меню!"<<endl<<endl;break;
        default:cout<<endl;
				 cout<<"вы ввели неверный символ!"<<endl;
				 cout<<endl;
				 cout<<"для продолжения нажмите Enter";
				 cin.get();break;
        }
    }
    system("pause");
}
void p5(){//количество элементов
	char ch_key;
    bool bMENU = true;
    while(bMENU)
    {
		system("cls");
        cout<<"В стеке "<<t<<" элементов"<<endl<<endl;;
        cout<<"ESC Выход"<<endl<<endl;
        switch((ch_key = _getch()))
        {
        case  27:bMENU = false;
				 cout<<endl;
				 cout<<"программа возвращается в главное меню!"<<endl<<endl;break;
        default:cout<<endl;
				 cout<<"вы ввели неверный символ!"<<endl;
				 cout<<endl;
				 cout<<"для продолжения нажмите Enter";
				 cin.get();break;
        }
    }
    system("pause");
}


 
int main()
{
	//locale::global(locale(""));
	//setlocale( LC_ALL,"rus" );
	system("chcp 1251");//кодировка символов
	
    char ch_key;
    bool bMENU = true;
    while(bMENU)
    {
		system("cls");
        cout<<"1)  Заполнение стека"<<endl;
        cout<<"2)  Удаление элемента из стека"<<endl;
        cout<<"3)  Очистка стека"<<endl;
        cout<<"4)  Вывод элементов, содержащихся в стеке"<<endl;
        cout<<"5)  Вывод количества элементов в стеке"<<endl;
        cout<<"ESC Выход"<<endl<<endl;
        cout<<"пожалуйста выберите пункт меню"<<endl;
        switch((ch_key = _getch()))
        {
        case '1':
            p1();
            break;
        case '2':
            p2();
            break;
        case '3':
            p3();
            break;
        case '4':
            p4();
            break;
        case '5':
            p5();
            break;
        case 27:
            bMENU = false;
			cout<<endl;
            cout<<"программа завершает свою работу!"<<endl;
            break;
        default:
            cout<<"вы ввели неверный символ!"<<endl;
			system("pause");
            break;
        }
    }
	cout<<endl;
    system("pause");
    return 0;
}
это мое задание под себя переделаете)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru