Programare, html, mysql, php etc.

DeletedUser2948

Guest
Stie cineva cum pot citi in c++ pana la sfarsitul unei linii?

De exemplu:
1 2 3 4
5 6

Si vreau sa mi le afiseze tot asa. Cum pot face?

i=1;
j=1;
while(fin>>n)
if(!EOL) {
a[j]=n;
j++;
} else {
a[++i][j]=n;
}

PS, Nu stiu daca merge ca n-am unde testa, dar teoretic ar trebui sa mearga :-?
 

DeletedUser

Guest
i=1;
j=1;
while(fin>>n)
if(!EOL) {
a[j]=n;
j++;
} else {
a[++i][j]=n;
}

PS, Nu stiu daca merge ca n-am unde testa, dar teoretic ar trebui sa mearga :-?


Acuma testez si eu. ASta e ceea ce vreau sa fac:
Sa citesc materia urmata de note. Ca si exemplu:
Bioligie 5 9 8 9
Mate 5 6 9

iar intr-un vector cu structuri memorezi numele si notele de la fiecare materie
 
Ultima editare de un moderator:

DeletedUser2948

Guest
Acuma testez si eu. ASta e ceea ce vreau sa fac:
Sa citesc materia urmata de note. Ca si exemplu:
Bioligie 5 9 8 9
Mate 5 6 9

iar intr-un vector cu structuri memorezi numele si notele de la fiecare materie

Testeaza algoritmul de mai sus si vezi daca merge. Daca merge iti explic cum sa faci si cu materile :)
 

DeletedUser

Guest
Testeaza algoritmul de mai sus si vezi daca merge. Daca merge iti explic cum sa faci si cu materile :)

am rezolvat
Asta e codul
Cod:
#include<iostream>
#include<fstream>
#include<math.h>
#include <stdlib.h> 
using namespace std;


ifstream fin ("in.txt");
ofstream fout("out.txt");


struct materien{
	char nume[25];
	double media;
};


struct elev{
	char nume[40];
	materien mat [19];
};



int main ()
{
	elev a[25];
	char var[50];
	int i=0, nrelevi=0, j=0,k=0, y, ct=0, nrmaterii=0;
	
	
	fin>>nrelevi;
	fin.get();
	fin>>nrmaterii;
	fin.get();
	
	///////////////// Citire numelui elevului. "i" va reprezenta nr elevului.
	for (i=0; i<nrelevi; i++)
	{
		fin.getline(a[i].nume, 39);
		fin.get();
		////////////// citirea materiei. Avem 18 materii. Asadar, j=0, j<18
		for (j=0;j< nrmaterii; j++)
		{
			fin.getline( var, 50); /// citim toata linia si vom proceda astfel:
			fin.get();
			
			for (k=0; var[k]!=' '; k++)// aici copiem litera cu litera din "var" in a[i].nume[k], adica materia.
				a[i].mat[j].nume[k]=var[k]; /// Cand am dat de spatiu, ne oprim. de ex avem Biologie 2 3 3 2. Copiem Biologie si cand am dat de spatiu ne-am oprit
				ct=0;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
				for ( k= strlen (a[i].mat[j].nume)+1; k < strlen (var); k++)
				{
					if (var[k] >= '2' && var[k] <='9')
						{
						ct++;
						y=(var[k]- '0');
						a[i].mat[j].media = a[i].mat[j].media+ +y; // Notele sunt de tip char. Pentru a le transforma in tip int, scadem 47, adica caracterul '0'
						}
							else
								if (var[k] == '1' && var[k+1]=='0')
								{
									ct++;
										y=10;
									a[i].mat[j].media = a[i].mat[j].media +y;
								}
									else
										
										if (var[k]=='1'  )
										{
											ct++;
												y=(var[k]- '0');
											a[i].mat[j].media = a[i].mat[j].media+ +y;
										}
				}
				if (j<4)
					a[i].mat[j].media	= 	(((a[i].mat[j].media-y) / (ct-1) ) * 3 + y) /4;
				else
					a[i].mat[j].media 	= a[i].mat[j].media/ct;
///////////////////////////////////////////////////////////////////////////////////////////////
/* La ce foloseste y-ul.
In fisierul de intrare, dupa numele fiecarei persoane, urmatoarele 4 materii vor fi materiile cu teza. 
Dupa cum ai vazut, avem (if j<4). Deci daca j e mai mic decat 4, atunci materia e cu teza. si aici intra y-ul
dupa cum ai vazut, y-ul primeste var[k] - '0'. daca de ex am avea 9, 9 e de tip char, iar ddaca scadem '0' ni-l va face de tip int.
Nota la teza va fi ultima din rand.
Iar noi adunam toate notele si inca nu le impartim. Dupa ce le-am adunat, scadem y, care este ultima nota din rand, impartim la ct-1 (fiind ca am scazut y-ul, care este teza)
dupa cee  am facut impartirea, inmultim cu 3, adunam teza ( y ) si impartim la 4.
*/
		}
	}
	
	return 1;
}

Fisierul dei ntrare este in.txt
pe primul rand se va gasi nr de elevi.
pe al doilea se va gasi nr de materii
se considera ca fiind 4 materii la care ai data teza ( primele 4 )
Dupa care se pune numele pe un rand
si materiile cu notele ca si in exemplul de mai sus.
 

DeletedUser

Guest
Are cineva idee cum pot detecta unde am dat click cu mouse-ul?
 
Sus