View Full Version : c++ dúvida


Imortal
13-11-2007, 21:35
Explique como funciona o ciclo "for".


For (int i= 0 ; i < 4; i++) soma + = notas [i];


Alguém me poderia ajudar a responder a esta questão? é bastante urgente...

cumps

Mr. Brightside
13-11-2007, 21:41
http://en.wikipedia.org/wiki/For_loop

Aprende a procurar...

Imortal
13-11-2007, 21:58
http://en.wikipedia.org/wiki/For_loop

Aprende a procurar...

Obrigado pela ajuda... Mas não percebo mesmo nada de inglês... :S
E era como funciona o ciclo "for" naquela situação... Se alguém me puder ajudar agradeço...
cumps

sir_atmc
13-11-2007, 22:42
Então tens:

For (int i= 0 ; i < 4; i++)

O que é que isto quer dizer? Ele declara o i como sendo do tipo int. Cria um ciclo desde i = 0 até i < 4, com o i a ser incrementado depois de cada execução do ciclo.

soma + = notas [i];

Isto é igual a

soma = soma + notas[i];

Em cada execução do ciclo, e enquanto que o i seja menor que 4, ele vai efectuar uma soma do valor que está em soma com o valor que está no inidice do vector (vou pensar que é um vector) notas. Ou seja

começa com i = 0

e faz

soma += notas[0];

depois incrementa o i para 1. Como ainda verifica a condição faz

soma += notas[1];

até que faz o ultimo

soma += notas[3];

o que significa o notas[i]? os elementos do vector são acedidos por indice. O primeiro elemento é o elemento de indice 0, que pode ser acedido por notas.begin() ou notas[0], e assim sucessivamente.

Consu
15-11-2007, 07:01
Já estás a considerar que notas é um [I]vector, quando na realidade pode ser apenas um simples array.
Acho que introduzir aqui iteradores, quando ele ainda não percebe como funciona um ciclo for é capaz de não ser uma boa ideia. :p

sir_atmc
15-11-2007, 11:27
Sim, mas dado que ele não disse o que era...também sendo um array ou um vector a coisa vai dar quase ao mesmo na maneira como se acede aos elementos. Mas se o user dissesse mais alguma coisa era boa ideia ;)

Reptil
17-11-2007, 12:07
Vou usar este topico para nao abrir outro.
Tenho a minha funçao main que vai chamar n vezes a funçao colocar(num ciclo for).E dentro da funçao colocar preciso de escrever para um ficheiro certos "passos" que acontecem la,isso atraves de ofstream.

O problema é que se abro o ficheiro ja dentro da colocar,so me fica la a ultima parte pois a cada vez que o ficheiro é aberto,apaga tudo o que la tenho.
Tava a pensar em abrir o ofstream dentro da main,por exemplo ofstream my(teste.txt) e depois passar o my como parametro na funçao colocar mas nao consigo.
Alguem sabe como se pode fazer isso?

sir_atmc
17-11-2007, 13:50
Não tenho aqui nenhum compilador de C++, mas não precisas de ter outra função





int main()
{
string cenas;

ofstream myfile("teste.txt");

myfile.open();


cout << "Escreva qualquer coisa: ";
while (cin)
{
cout << endl;


if (myfile.is_open())
{
myfile << cenas << endl;
}
} //fecha o ciclo while. Para terminar o intput fazer ctrl+z em windows, ctrl+d em UNIX
}
Peço desculpa pela indentação e se estiver errado, mas tive de fazer à pressa e não tenho aqui nenhum compilador para testar.

krubach
21-11-2007, 17:27
Obrigado pela ajuda... Mas não percebo mesmo nada de inglês... :S


Epa... então tás na àrea errada... :002:

mj2p
23-11-2007, 17:27
Vou usar este topico para nao abrir outro.
Tenho a minha funçao main que vai chamar n vezes a funçao colocar(num ciclo for).E dentro da funçao colocar preciso de escrever para um ficheiro certos "passos" que acontecem la,isso atraves de ofstream.

O problema é que se abro o ficheiro ja dentro da colocar,so me fica la a ultima parte pois a cada vez que o ficheiro é aberto,apaga tudo o que la tenho.
Tava a pensar em abrir o ofstream dentro da main,por exemplo ofstream my(teste.txt) e depois passar o my como parametro na funçao colocar mas nao consigo.
Alguem sabe como se pode fazer isso?


Boas. Olha, eu resolvia o teu problema da seguinte forma:



#include <fstream>
using namespace std;

int main()
{

char* mensagem;

mensagem = new char[25];

cout <<"Escreva a sua mensagem--> ";

cin >>mensagem;

while (mensagem != EOF) //CTRL+Z em sistema Windows
{

//este especificador de acesso faz com que tudo o que seja acrescentado o seja feito no final do ficheiro.
ofstream WriteFile ("ficheiro.txt", ios::app);

WriteFile << mensagem;

cin>>mensagem;

} //fecho implicito do ficheiro e garantia de escrita no disco.

delete [] mensagem; //eliminar da memória RAM a tua variável.

return 0;

}



Prontos, acho que isto funciona. Não compilei mas em principio deve resultar. Se houver algum erro avisa para corrigir.

Vá, cumps.