Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C++]Строки и файлы


Автор: Russs 27.5.2007, 17:43
Подскажите плиз,как мне написать программу: в файле записана строка1, и нужно ввести строку2, надо подсчитать кол-во вхождений букв строки1 в строку2.
Например:
В файле F.txt записана стока ABCD
программа просит ввести строку, допустим AbCDABCDAbcD
программа должна вывести на экран кол-во букв A=3, B=1, C=2, D=3

Автор: DigitSphinx 27.5.2007, 18:22
Код

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
int GetCharCount(char ch, char * str)
{
    int len = strlen(str);
    int CharCount(0);
    for (int i = 0; i < len; i++)
    {
        if (ch == str[i])
            CharCount ++;        
    }
    
    return CharCount;
}
int _tmain(int argc, _TCHAR* argv[])
{
    ifstream InFile("F.txt");
    if (!InFile.is_open())
    {
        cout << "Error Opening File" << endl;
        _getch();
        return 4;
    }
    char str[1024];
    cout << "Enter String" << endl;
    cin >> str;
    char FromFile[1024];
    InFile >> FromFile;
    int CharCount = strlen(FromFile);
    for (int i = 0; i < CharCount; i++)
        cout << FromFile[i] << " = " << GetCharCount(FromFile[i], str) << endl;
    _getch();
    return 0;
}

Вроде все понятно !
P.S здесь вопросы задают а не просят писать проги
P.P.S. учи программирование если что будет не понятно спешивай ответят !

Автор: Xenon 27.5.2007, 18:27
Код

#include <iostream>
#include <sstream>
#include <string>
#include <fstream>
int main(int argc, char* argv[])
{
    std::string path;
    std::cout << "Enter path to file: ";
    std::getline(std::cin, path);
    std::ifstream in_file( path.c_str() );
    if ( !in_file.is_open() ) return -1;
    std::stringstream buf;
    buf << in_file.rdbuf();
    std::string str1( buf.str() );
    std::cout << "Enter str2: ";
    std::string str2;
    std::getline(std::cin, str2);
    for (int i = 0, str2_size = str2.size(), str1_size = str1.size(); i < str1_size; ++i)
    {
        char symbol = str1[i];
        int count = 0;
        for (int j = 0; j < str2_size; ++j) if (str2[j] == symbol) ++count;
        std::cout << symbol << ' ' << count << std::endl;
    }
    std::cin.get();
    return 0;
}

Автор: Earnest 27.5.2007, 18:56
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: apook 27.5.2007, 22:02
Код

#include<ctype.h>
#include<conio.h>

#include<stdio.h>
#include<string.h>

#include<stdlib.h>

FILE *in;


int CharCount( char *str, char *ins_str, int count )
{
int i, c, len;
len=strlen( ins_str );

for( i=0, c=0; i<strlen(str); i++ )
    if( str[ i ]==ins_str[ count ] )
        ++c;

printf( "%c amount %d\n", ins_str[ count ], c ); 
getch();

return( ++count==len ) ? count : CharCount( str, ins_str, count ); 
}


void main()
{
int i;
char str[ 100 ], ins_str[ 100 ];

if( !(in=(fopen(".\\F.txt", "r+"))) )
{
    printf( "No Input FIle!\n" );
    return;
    }

printf( "Insert string: " );
gets( ins_str );

for( ;fgets(str, 100, in); )
{
    printf( "Line %s", str ); 
    CharCount( str, ins_str, 0 );
    }
fputs( ins_str, in );
fclose( in );
return;
}

Автор: Xenon 27.5.2007, 22:36
Или так, если посимвольно считывать файл:
Код

#include <iostream>
#include <string>
#include <fstream>

int main(int argc, char* argv[])
{
    std::string path;
    std::cout << "Enter path to file: ";
    std::getline(std::cin, path);
    std::ifstream in_file( path.c_str() );
    if ( !in_file.is_open() ) return -1;
    std::cout << "Enter str: ";
    std::string str;
    std::getline(std::cin, str);
    while(true)
    {
        char symbol = in_file.get();
        if ( in_file.eof() ) break;
        int count = 0;
        for (int i = 0; i < str.size(); ++i) if (str[i] == symbol) ++count;
        std::cout << symbol << ' ' << count << std::endl;
    }
    std::cin.sync();
    std::cin.get();
    std::cin.get();
    return 0;
}



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)