Forum.hr

Natrag   Forum.hr > Informatička tehnologija > Za napredne korisnike > Programiranje
Korisničko ime
Lozinka

Programiranje Za programere i one koji to žele postati ...

Odgovor
 
Tematski alati Opcije prikaza
Old 16.06.2012., 12:46   #1
naughty guy
Registrirani korisnik
 
Registracija: Feb 2010.
Postova: 196
brojanje slova svake rijeci u stringu

bok,

imam jedan zadatak u kojemu nikako ne mogu skuzit kako da u jednodimenzionalnom polju upisem brojeve znakova svake rijeci iz stringa, pa bih vas zamolio ako mi neko moze pomoci.
zadatak je sav rijesen osim tog dijela.

nadam se da nisam fulao PDF.

/*Stvorite polje od n naziva ustanova.
Pronađite najkraći naziv ustanove i kopirajte ga u string S.
U stringu S pretvorite prvo i zadnje slovo predzanje riječi u veliko slovo.
U funkciji suma pronađite sumu ASCII kodova stringa S te u funkciji pretvori pretvorite dobivenu sumu ASCII kodova u sustav s bazom 19.
Stvorite jednodimenzionalno dinamicko polje N u koje cete upisati brojeve znakova svake rijeci stringa S.
Ispišite polje naziva ustanova, string S, dobiveni ekvivalent u sustavu s bazom 19 i dinamičko polje N.*/

Kod:
#include "stdafx.h"
#include <iostream> 
#include <string> 
#include <ctype.h> 

#define naziv 100 
#define slova 100 

using namespace std; 

int suma(char znak[]) 
{ 
	int i, sum=0; 
	for(i=0;i<strlen(znak);i++) 
		sum+=znak[i]; 
	return sum; 
} 

void pretvori(int broj, int baza) 
{ 
	if(broj >= baza) 
		pretvori(broj/baza,baza);
		if(broj%baza >= 10) 
			cout<<char ((broj%baza)+55); 
		else 
		cout<<broj%baza; 
} 

void main() 
{ 
    char ustanova[naziv][slova], S[slova]; 
	int i, j, n, duljina=100, s; 

	cout<<"Koliko ustanova zelite upisati? "; 
	cin>>n; 
	cout<<endl; 
	cin.ignore(); 

	int *DULJINA = new int [n]; 
	int *N = new int [n]; 

	for(i=0;i<n;i++) 
	{ 
		cout<<"Upisite naziv "<<i+1<<". ustanove: "; 
		cin.getline(ustanova[i],slova); 
		
		*(DULJINA+i) = strlen(ustanova[i]); 

		if(strlen(ustanova[i]) < duljina) 
		{ 
			duljina = strlen(ustanova[i]); 
			strcpy(S,ustanova[i]); 
		} 

	} 

	for(i=strlen(S);i>0;i--) 
	{
		if(S[i]==' ') 
		{
			S[i-1]=toupper(S[i-1]); 
		for(j=i-1;j>0;j--)
		{
			if(S[j]==' ') 
			{ 
			S[j+1]=toupper(S[j+1]); 
			break;
			} 
		}
		break;
		} 
	} 

			

	//???????? brojanje znakova svake rijeci u stringu

	

	cout<<endl; 
	for(i=0;i<n;i++) 
	cout<<"Naziv "<<i+1<<". ustanove je: "<<ustanova[i]<<endl<<endl; 

	cout<<"Najmanji naziv ustanova je: "<<S<<endl<<endl;

	s = suma(S);
	cout<<"Ekvivalent sume ASCII kodova "<<s<<" stringa S je: "; 
	pretvori(s,19); 
	cout<<endl; 

	

	for(i=0;i<n;i++) 
		cout<<"Broje znakova u "<<i+1<<". nazivu je: "<<*(DULJINA+i)<<endl<<endl;

}
hvala unaprijed na svakom ulozenom trudu.

Zadnje uređivanje naughty guy : 16.06.2012. at 12:58.
naughty guy is offline  
Odgovori s citatom
Old 17.06.2012., 22:18   #2
MijenjamSe
Registrirani korisnik
 
Registracija: Nov 2011.
Postova: 116
Pomoću funkcije lenght() dobiješ koliko koji string ima karaktera ali prvo trebaš učitati cijelu liniju u txt datoteci u string pomoću getline().
getline("datoteka.txt", string_varijabla)
i onda string_varijabla.lenght() će ti vratiti koliko ima karaktera u tom stringu.
i to samo upiši u svoj niz pod indeksom koji već trebaš.
recimo niz[0] = getline("txtdatoteka.txt", string_varijabla).lenght()
MijenjamSe is offline  
Odgovori s citatom
Old 18.06.2012., 22:50   #3
odiee
Registrirani korisnik
 
odiee Avatar
 
Registracija: Feb 2006.
Lokacija: U djelu memorije iza deklarirane velicine polja.
Postova: 1,934
Quote:
MijenjamSe kaže: Pogledaj post
Pomoću funkcije lenght() dobiješ koliko koji string ima karaktera ali prvo trebaš učitati cijelu liniju u txt datoteci u string pomoću getline().
getline("datoteka.txt", string_varijabla)
i onda string_varijabla.lenght() će ti vratiti koliko ima karaktera u tom stringu.
i to samo upiši u svoj niz pod indeksom koji već trebaš.
recimo niz[0] = getline("txtdatoteka.txt", string_varijabla).lenght()
Ovo nema veze s pitanje kojeg je covjek postavio. I molio bih te da ne razvodnjavas forum s polovicnim,nepotpunim i potpuno izvan kontexta postovima.
odiee is offline  
Odgovori s citatom
Old 18.06.2012., 22:57   #4
odiee
Registrirani korisnik
 
odiee Avatar
 
Registracija: Feb 2006.
Lokacija: U djelu memorije iza deklarirane velicine polja.
Postova: 1,934
@Naugty Guy

Ako si prepisao ovaj zadatak iz PDFa kako si ga dobio onda imas predavaca/profesora koji ili je zavrsio 6-mjeseci tecaj za C++ programera ili mu nije mjesto uciti ljude C++.

Rijesio sam 2/3 tvog zadatka. Ali vidjet ces u komentarima koliko je tvoj predavac/profesor/ucitej fulao.
Naravno ako zadatak koji si ti dobio u pdf-u je identican ovome koji si postao.

Kod:
#include "string"

using namespace std;


/*Stvorite polje od n naziva ustanova.
Pronađite najkraći naziv ustanove i kopirajte ga u string S.
U stringu S pretvorite prvo i zadnje slovo predzanje riječi u veliko slovo.
U funkciji suma pronađite sumu ASCII kodova stringa S te u funkciji pretvori pretvorite dobivenu sumu ASCII kodova
// u sustav s bazom 19.
Stvorite jednodimenzionalno dinamicko polje N u koje cete upisati brojeve znakova svake rijeci stringa S.
Ispišite polje naziva ustanova, string S, dobiveni ekvivalent u sustavu s bazom 19 i dinamičko polje N.*/

// Nakon borbi sa ovim zadatkom i njegovim podzadacima uspio sam izvuci
// pravi zadatak. i ako se ne varam glasi ovako

// 1. Stvorite polje 'ustanove' tipa 'string' od 'n' broja ustanova.  
// 2. Ispunite polje 'ustanove' s razlicitim imenima ustanova.
// 3. Unutar polje 'ustanove' nadjite najkraci naziv ustanove i kopirajte ga u globalni string 'S'
// 4  U stringu S pretvorite prvo i zadnje slovo predzanje riječi u veliko slovo.
// 5. U funkciji suma pronađite sumu ASCII kodova stringa S.
//    a) te u funkciji 'pretvori' pretvorite dobivenu sumu ASCII kodova
//       u sustav s bazom 19. (THE FUCK??) (sta je to suma ACCII kodova s bazom 19?)
// 6. Stvorite jednodimenzionalno dinamicko polje N u koje cete upisati brojeve znakova svake rijeci stringa S.
// 7. Ispišite polje naziva ustanova, string S, dobiveni ekvivalent u sustavu s bazom 19 i dinamičko polje N.





int _tmain(int argc, _TCHAR* argv[])
{
 string S;
 // ke, ajmo probat
 int brojUstanova = 10;   // recimo  ('n')
 
 // 1. Stvorite polje 'ustanove' tipa 'string' od 'n' broja ustanova.  
 string *ustanove = new string [brojUstanova];
 
 
 // 2. Ispunite polje 'ustanove' s razlicitim imenima ustanova.
 ustanove[0] = "Kako bili da bilo";
 ustanove[1] = "Igramo tekmu a ja prckam po forumu";
 ustanove[2] = "codeguru.com";
 ustanove[3] = "sourceforge.com";
 ustanove[4] = "Nice";
 ustanove[5] = "Alen Bokic";
 ustanove[6] = "Prdne kokic";
 ustanove[7] = "Alo ima koga";
 ustanove[8] = "Zajebali me u knjiznici danas";
 ustanove[9] = "meh";   
 
 
 // 3. Unutar polje 'ustanove' nadjite najkraci naziv ustanove i kopirajte ga u globalni string 'S'
 int kraciNaziv = 256;   // bilo koji broj koji je najveci od broja slova u svakoj ustanovi
                         // a kako su nazivi ustanova u ovom primjeru hardkodirani, onda 256.
 for (int c=0;c<brojUstanova;c++)
     {
      if (ustanove[c].size() < kraciNaziv)
         {
          kraciNaziv = ustanove[c].size();  // uvijek ce ovdje biti najkraci sljedeci.
                                            // tako da ce nakraju ostati nakraci od svih
         }
     }
 
 // na ovom mjestu sada znamo najkraci naziv.
 // usporedimo sada sve stringove opet i nadjimo onaj najkraci.
 // NOTE: Sto ako ima dva najkraca istih broj slova? (ko ga jebe nije specificirano u zadatku,
 //       ionako nista nije specificirano). Samo mi daj prvi
 int nakojembrojujenakraci = 0;
 for (int c=0;c<brojUstanova;c++)
     {
      if (ustanove[c].size() == kraciNaziv)
         {
          nakojembrojujenakraci = c;  // WOHOO! imamo ga
         }
     }
 
// 4.  U stringu S pretvorite prvo i zadnje slovo predzanje riječi u veliko slovo.
char zadnjeSlovo= 0,prvoSlovo = 0;

// Oke trazimo prvo i zadnje slovo. Pa zadnje ce valjda biti na 
 zadnjeSlovo = ustanove[nakojembrojujenakraci][ustanove[nakojembrojujenakraci].size()-1];   // -1 zato sto je zadnje uvijek '\0' deliminator
 //char zadnjeUVeliko = OvdjeImaNekaFunkcijaNaNetuKojaPretvaraMaloUVelikoSlovoZiher(zadnjeSlovo);
 char zadnjeUVeliko = 'f';
 ustanove[nakojembrojujenakraci][ustanove[nakojembrojujenakraci].size()-1] = zadnjeUVeliko; // opet -1
 
//  a sada da nadjemo prvu razmaknicu ili ako je jedna rijec onda 0 pa da nadjemo prvo slovo
// pocnimo od kraja prema pocetku.

int brojSlova = ustanove[nakojembrojujenakraci].size();
for (int c = brojSlova;c>0;c--)
    {
     if (ustanove[nakojembrojujenakraci][c] == ' ')  // razmaknica
        {
         prvoSlovo++;   // sada je na razmaknici, pa pomaknimo na slovo
        }
    }

 // HOOO! Ovdje imamo na kojem se mjestu nalazi prvo slovo pa opet isto
 ustanove[nakojembrojujenakraci][prvoSlovo] = 'g';
 //char prvoUVeliko = OvdjeImaNekaFunkcijaNaNetuKojaPretvaraMaloUVelikoSlovoZiher(zadnjeSlovo);


// 6. Stvorite jednodimenzionalno dinamicko polje N u koje cete upisati brojeve znakova svake rijeci stringa S.
// pokusaj sam




// 7. Ispišite polje naziva ustanova, string S, dobiveni ekvivalent u sustavu s bazom 19 i dinamičko polje N.
// pokusj sam

 
 
 return 0;
}
odiee is offline  
Odgovori s citatom
Sponsored links
Advertisement
 
Advertisement
Old 21.06.2012., 10:48   #5
MijenjamSe
Registrirani korisnik
 
Registracija: Nov 2011.
Postova: 116
Čovjek je tražio samo "kako da u jednodimenzionalnom polju upisem brojeve znakova svake rijeci iz stringa,".

Pročitaj još jednom
MijenjamSe is offline  
Odgovori s citatom
Old 23.06.2012., 17:50   #6
naughty guy
Registrirani korisnik
 
Registracija: Feb 2010.
Postova: 196
ej, hvala vam obojici.. nemojte se zbog mene svadjat
nazalost, trenutno sam upao u neku guzvu, pa ne stignem bas ni do kompa, tako da cu tek za par dana moci ovo isprobati... hvala
naughty guy is offline  
Odgovori s citatom
Old 29.06.2012., 23:56   #7
odiee
Registrirani korisnik
 
odiee Avatar
 
Registracija: Feb 2006.
Lokacija: U djelu memorije iza deklarirane velicine polja.
Postova: 1,934
Quote:
MijenjamSe kaže: Pogledaj post
Čovjek je tražio samo "kako da u jednodimenzionalnom polju upisem brojeve znakova svake rijeci iz stringa,".

Pročitaj još jednom
Malo sam se zanio ah.
odiee is offline  
Odgovori s citatom
Sponsored links
Advertisement
 
Advertisement
Odgovor


Tematski alati
Opcije prikaza

Pravila postanja
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smajlići su On
[IMG] kôd je Off
HTML kôd je Off





Sva vremena su GMT +2. Trenutno vrijeme je: 23:18.


Marketing





Powered by vBulletin Version 3.8.4 (hrvatski)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Site content ©1999-2009 Forum.hr
Ad Management by RedTyger