[Ajutor] C++

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
retry
Junior
Junior
Posts: 1
Joined: 18 Dec 2012, 09:31
Judet: Cluj

[Ajutor] C++

Post by retry » 18 Dec 2012, 09:35

As vrea sa fac o aplicatie care citeste carcter cu caracter un fisier text creeat de mine si sa converteasca primul caracter al cuvintelor in caracter majuscula. Ma poate ajuta cineva?



mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: [Ajutor] C++

Post by mesajflaviu » 18 Dec 2012, 10:00

Chiar si aici pe forum ai sa gasesti cod care citeste dintr-un fisier text dat ... apoi, in fiecare rand citit, dupa fiecare spatiu gasit, testezi daca primul caracter e litera (nu cifra), si o transformi in majuscula ... clasa MFC CString are o metoda CString::MakeUpper(...) pentru asta ... incearca si tu ceva, si daca nu reusesti, santem aici ...

User avatar
bu7ch3r
Membru++
Membru++
Posts: 326
Joined: 17 May 2011, 15:17
Judet: Iaşi
Location: Sofia
Contact:

Re: [Ajutor] C++

Post by bu7ch3r » 18 Dec 2012, 13:49

Pana la MFC cred ca este cale lunga pentru retry.
Daca ramanem pe meleagurile lui c99 cred ca e ok sa testezi daca primul caracter al unui cuvant e litera mica si apoi sa-l transformi in litera mare.
Fiecare caracter are un cod. Poti sa vezi codul daca afisezi fiecare caracter de la 0 la 255.

Code: Select all

 printf("Codul %d este pentru caracterul %c", 65, 65");
sau te uiti aici
http://ascii-table.com/ascii.php

Poti sa mai observi ca intre 'a' si 'A' e o diferenta intre coduri de 32 parca :)
Cu stima,
Lupu Claudiu

nmg
Junior
Junior
Posts: 43
Joined: 12 Jul 2007, 07:36

Re: [Ajutor] C++

Post by nmg » 18 Dec 2012, 16:15

Code: Select all

#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <string>
#include <conio.h>

using namespace std;

#pragma warning(disable : 4996)

// cand gaseste un spatiu, functia converteste la majuscula caracterul urmator
void ProcessLine(string& str)
{
	size_t idx = -1;

	do
	{
		idx++;
		str[idx] = toupper(str[idx]); // converteste la majuscula caracterul

		idx = str.find(" ", idx);
	}
	while (idx != string::npos);

	cout << str << endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	ifstream fileIn("test.txt");

	// open file
	if (!fileIn.good())
	{
		cout << "eroare la deschidere test.txt" << endl;
		getch();
	
		return 1;
	}

	// citeste fisierul linie cu linie
	string str;
	while(getline(fileIn, str))
	{
		// afiseaza linia 
		cout << str << endl;

		// prelucreaza linia
		ProcessLine(str);
		cout << endl;
	}

	// inchide fisierul
	fileIn.close();
	
	getch();

	return 0;
}
In programul principal se citeste fisierul text dat, linie cu linie (eu zic ca ar fi ineficient sa fie citit caracter cu caracter.) In continuare, functia ProcessLine(string& str) cauta in stringul respectiv caracterele "spatiu", inlocuind urmatorul caracter cu majuscula lui.

Post Reply