# Problema "Rispetta i versi"

**URL:** <https://forum.olinfo.it/t/problema-rispetta-i-versi/4808>\
**Category:** Aiuto\
**Created:** [29 Settembre 2017, 7:58pm UTC](https://forum.olinfo.it/t/problema-rispetta-i-versi/4808 "2017-09-29T19:58:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mastro](https://forum.olinfo.it/user_avatar/forum.olinfo.it/mastro/32/2993_2.png) [@mastro](https://forum.olinfo.it/u/mastro)\
**Post date:** [29 Settembre 2017, 7:58pm UTC](https://forum.olinfo.it/t/problema-rispetta-i-versi/4808/1 "2017-09-29T19:58:21Z")

</div>

Il codice di seguito mi risolve solo i primi 4 testcase, gli altri 6 mi dà che la soluzione è errata.

> ```
> #include <stdio.h>
> 
> ```
> 
> main()  
> {  
> FILE \*f1;  
> FILE \*f2;  
> f1=fopen(“input.txt”,“r”);  
> f2=fopen(“output.txt”,“w”);  
> int l,i;  
> int temp;  
> fscanf(f1,“%d\t”,&l);  
> int v[l];  
> for(i=0; i\<l; i++){  
> v[i]=i+1;  
> }  
> char s[l];  
> fgets(s,l,f1);  
> for(i=0; i\<l-1; i++){  
> if(s[i]==‘\>’){  
> temp=v[i];  
> v[i]=v[i+1];  
> v[i+1]=temp;  
> }  
> }  
> for(i=0; i\<l-1; i++){  
> if(s[i]==‘\>’){  
> if(v[i]\<v[i+1]){  
> temp=v[i];  
> v[i]=v[i+1];  
> v[i+1]=temp;  
> }  
> }  
> else{  
> if(v[i]\>v[i+1]){  
> temp=v[i];  
> v[i]=v[i+1];  
> v[i+1]=temp;  
> }  
> }
> 
> }  
> for(i=0; i\<l; i++){  
> fprintf(f2,"%d ", v[i]);  
> }  
> fclose(f1);  
> fclose(f2);  
> }

So che il codice è primitivo, ma ho iniziato ad allenarmi da poco, quindi ogni consiglio è benaccetto.

---

<div class="post-metadata">

**Author:** ![db2000](https://forum.olinfo.it/user_avatar/forum.olinfo.it/db2000/32/391_2.png) [@db2000](https://forum.olinfo.it/u/db2000)\
**Post date:** [30 Settembre 2017, 9:24am UTC](https://forum.olinfo.it/t/problema-rispetta-i-versi/4808/2 "2017-09-30T09:24:03Z")

</div>

Magari prova a spiegare cosa fa il tuo algoritmo, così è più semplice capire dove sbagli (se è sbagliato il ragionamento o l’implementazione) 😋

---

<div class="post-metadata">

**Author:** ![frakkiobello](https://forum.olinfo.it/user_avatar/forum.olinfo.it/frakkiobello/32/2768_2.png) [@frakkiobello](https://forum.olinfo.it/u/frakkiobello)\
**Post date:** [30 Settembre 2017, 11:28am UTC](https://forum.olinfo.it/t/problema-rispetta-i-versi/4808/3 "2017-09-30T11:28:55Z")

</div>

Se non ho capito male parti dalla disposizione iniziale con i numeri crescenti da 1 a N, poi nel caso in cui tra due numeri in posizione i e i+1= sia presente il minore verifichi che i sia minore di i+1 altrimenti li inverti e viceversa.

Questa idea non è del tutto corretta , prova con questa configurazione  
n=3 \> \> \>

---

<div class="post-metadata">

**Author:** ![mastro](https://forum.olinfo.it/user_avatar/forum.olinfo.it/mastro/32/2993_2.png) [@mastro](https://forum.olinfo.it/u/mastro)\
**Post date:** [30 Settembre 2017, 5:13pm UTC](https://forum.olinfo.it/t/problema-rispetta-i-versi/4808/4 "2017-09-30T17:13:52Z")

</div>

Si, ho capito dov’è il problema, grazie 👍

---

<div class="post-metadata">

**Author:** ![mastro](https://forum.olinfo.it/user_avatar/forum.olinfo.it/mastro/32/2993_2.png) [@mastro](https://forum.olinfo.it/u/mastro)\
**Post date:** [30 Settembre 2017, 5:55pm UTC](https://forum.olinfo.it/t/problema-rispetta-i-versi/4808/5 "2017-09-30T17:55:35Z")

</div>

Ok, ho provato e ottimizzandolo un po’ è venuto 👍; grazie ancora per il consiglio
