Jump to content
Fórum Script Brasil

Samuel Rios

Membros
  • Posts

    4
  • Joined

  • Last visited

About Samuel Rios

Samuel Rios's Achievements

0

Reputation

  1. Pessoal, o objetivo da função newData é apenas armazenar um nome numa determinada posição do vetor, porém quando eu vou imprimir o vetor, depois de já ter colocado os nomes, é como se ele tivesse colcado o último nome que entrou em todas as posições do vetor. vejam o código: #include <stdio.h> typedef struct{ char *c; } data_t; void newData(data_t dx[], int j, char *t){ dx[j].c=t; } int main(){ data_t dv[10]; char s[10]; for(int i=0; i<10; i++){ printf("Digite o nome %d: ", (i+1)); scanf("%s", s); newData(dv, i, s); } for(int i=0; i<10; i++) printf("Nome da posição %d: %s\n", (i+1), dv[i].c); } Se puderem me ajudar a resolver esse problema, agradeço 🙂
  2. Perdão, amigo! Cometi um equívoco estúpido, o tempo que aparece lá no site é o tempo que eu demorei para submeter o algoritmo desde a liberação da lista. Então, a cada vez que eu enviava o código o tempo ia, obviamente, crescendo. Não mostrei seu código ao meu professor, ele só deu essa pequena observação não generalizando. A má interpretação foi minha, como tenho dito. Agora eu acredito que foi uma solução. Vlw!
  3. Cara, segui tua recomendação, mas isso aumentou 3x o tempo do algoritmo. Meu professor sempre comentou que if e else custa muito caro, quanto mais pudermos diminuir o uso, melhor! O computador meio que "para" para fazer todas as comparações e isso custa mais tempo. Não foi uma solução :/
  4. Fala pessoal! Bem, escrevi um algoritmo em c++ para a solução de um problema mas acontece que o tempo de execução dele está acima da média. Tentei pensar o que poderia estar causando tal situação e reescrevi o código. Sucedeu que na segunda tentativa eu consegui reduzir tempo, mas ainda assim ele continua acima da média. O problema é o seguinte: Dado um vetor(que tem N elementos inteiros digitados pelo usuário), imprimir os três maiores números do mesmo em ordem decrescente. Segue os dois algoritmos: 01- Time: @45:30 #include <iostream> #include <vector> using namespace std; int main (){ int N, c, aux, i, j; cin >> N; vector <int> contri; for(int i=0; i<N; i++){ cin >> c; contri.push_back(c); } for(i=0; i<3; i++){ aux=0; for(j=i+1; j<N; j++){ if(contri[aux]<contri[j]){ aux=j; } } cout << contri[aux] << endl; contri[aux]=-1; } } 02- Time: @33:32 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main (){ int N; cin >> N; vector <int> contri; for(int i=0; i<N; i++){ int c; cin >> c; contri.push_back(c); } stable_sort(contri.begin(), contri.end(), less<int>()); cout << contri[N-1] << endl; cout << contri[N-2] << endl; cout << contri[N-3] << endl; } Todos da minha sala estão dando uma média de time: @20:30. Poderiam me dar dicas de como posso otimizar mais o meu algorímo? Não só esse, mas os meus próximos. Agradeço!
×
×
  • Create New...